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

Iteration: Invalid operands to binary expression

我正在尝试遍历一组字符串,在此处声明:

std::set<std::string>aB;,这里是std::set<int>::iterator iter;

问题出在这里:

for(iter = aB.begin(); iter != aB.end(); ++iter) {
    std::cout << *iter << n;

理论上,这应该打印出 aB(available Buildings)的内容,但它却给出了两个错误:

error: no viable overloaded '=' -> [ for(iter = aB.begin(); ]

error: invalid operands to binary expression -> [ std::set< int >::iterator ]

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

而不是

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;

您应该使用原始集合类型迭代器。所以在你的情况下它将是:

std::set<std::string>::iterator iter;