gpt4 book ai didi

c++ - std::set 使用 char * 类型查找行为

转载 作者:行者123 更新时间:2023-12-01 13:22:27 25 4
gpt4 key购买 nike

我有以下代码行:

const char *values[] = { "I", "We", "You", "We"};
std::set<const char*> setValues;

for( int i = 0; i < 3; i++ ) {

const char *val = values[i];
std::set<const char*>::iterator it = setValues.find( val );

if( it == setValues.end() ) {
setValues.insert( val );
}
else {
cout << "Existing value" << endl;
}
}

有了这个,我试图在 set 中插入非重复值,但不知何故代码没有点击打印现有元素,并且插入了重复值。

这里有什么问题?

最佳答案

您应该为 const char* 定义 less 谓词并传递到 set 模板以使 set 对象与指针一起正常工作:

  struct cstrless {
bool operator()(const char* a, const char* b) {
return strcmp(a, b) < 0;
}
};
std::set<const char*, cstrless> setValues;

关于c++ - std::set 使用 char * 类型查找行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com