我想创建一个,以便我可以使用 set::find 检查某个单词是否在集合中
然而,C 字符串是指针,因此默认情况下该集合将通过指针值来比较它们。为了正确运行,必须取消引用它们并比较字符串。
我可以只向构造函数传递一个指向 strcmp() 函数的指针作为比较器,但这并不完全是我希望它工作的方式。我可能想要检查的单词可能是较长字符串的一部分,并且由于性能问题我不想创建新字符串。如果没有该集合,我会使用 strncmp(a1, a2, 3) 来检查前 3 个字母。事实上,3 可能是最长的,所以我同意第三个参数为常量。
有没有办法构建一个集合,通过调用 strncmp() 来比较其元素?代码示例将不胜感激。
这是我想做的事情的伪代码:
bool WordInSet (string, set, length)
{
for (each word in set)
{
if strncmp(string, word, length) == 0
return true;
}
return false;
}
但我更喜欢使用标准库函数来实现它。
您可以创建一个比较器函数对象。
struct set_object {
bool operator()(const char* first, const char* second) {
return strncmp(first, second, 3);
}
};
std::set<const char*, set_object> c_string_set;
然而,制作一套会更容易、更可靠。std::strings
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)