我正在尝试迭代一组字符串,在这里声明:
std::set<std::string>aB;
,此处std::set<int>::iterator iter;
问题在于:
for(iter = aB.begin(); iter != aB.end(); ++iter) {
std::cout << *iter << n;
理论上,这应该打印出aB(可用建筑物)的内容,但它会产生两个错误:
错误:没有可行的重载'=' - &gt; [for(iter = aB.begin();]
和
错误:二进制表达式的操作数无效 - &gt; [std :: set&lt; int&gt; :: iterator]
非常感谢任何帮助,谢谢。
答案 0 :(得分:3)
而不是
std::set<int>::iterator iter;
使用
std::set<std::string>::iterator iter;
由于您使用的是C ++ 11,因此您也可以使用:
for(auto iter = aB.begin(); iter != aB.end(); ++iter) {
std::cout << *iter << n;
更好的是,使用构造范围:
for(auto const& item : aB) {
std::cout << item << n;
答案 1 :(得分:2)
您应该使用原始设置类型的迭代器。所以在你的情况下,它将是:
std::set<std::string>::iterator iter;