C++ 如何修复:无法获取集合中元素的索引
如果我有一组字符串:C++ 如何修复:无法获取集合中元素的索引,c++,set,C++,Set,如果我有一组字符串: std::set<string> my_set; 其中store是类的向量,其中包含字符串名称作为字段。 我做错了什么,否则如何得到集合元素的索引 我当前得到的错误是: error: no match for ‘operator[]’ (operand types are ‘std::set<std::__cxx11::basic_string<char> >’ 错误:“运算符[]”不匹配(操作数类型为“std::set” 如错误消息
std::set<string> my_set;
其中store是类
的向量,其中包含字符串名称
作为字段。
我做错了什么,否则如何得到集合元素的索引
我当前得到的错误是:
error: no match for ‘operator[]’ (operand types are ‘std::set<std::__cxx11::basic_string<char> >’
错误:“运算符[]”不匹配(操作数类型为“std::set”
如错误消息所示,没有运算符[]
您已经有了一个迭代器,因此可以使用它访问元素
auto it = std::find(my_set.begin(), my_set.end(), string_to_find);
if (it != my_set.end()){
for (auto s : store){
if(s.name == *it){
s.item += 1;
}
}
}
如错误消息所示,没有
运算符[]
您已经有了一个迭代器,因此可以使用它访问元素
auto it = std::find(my_set.begin(), my_set.end(), string_to_find);
if (it != my_set.end()){
for (auto s : store){
if(s.name == *it){
s.item += 1;
}
}
}
std::set
不实现运算符[]
,因为它不连续存储元素,也无法通过索引直接访问元素
改变
if(s.name == my_set[index]){
到
应该可以工作。
std::set
未实现运算符[]
,因为它不连续存储元素,并且无法通过索引直接访问它
改变
if(s.name == my_set[index]){
到
应该可以工作。这看起来像。为什么需要“索引”?取消对迭代器
的引用的方法不是尝试将其转换为索引并调用运算符[]
,而是调用*它
。这看起来像。为什么需要“索引”?取消对迭代器的引用的方法不是试图将其转换为索引并调用运算符[]
,而是调用*它
。