迭代:二进制表达式的操作数无效

时间:2015-07-20 21:38:46

标签: c++ c++11 set

我正在尝试迭代一组字符串,在这里声明:

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]

非常感谢任何帮助,谢谢。

2 个答案:

答案 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;