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

Iteration: Invalid operands to binary expression

本文关键字:操作数 无效 表达式 二进制 迭代      更新时间:2023-10-16

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

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

问题在这里:

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

理论上,这应该打印出aB(可用建筑)的内容,但是,它给出了两个错误:

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

错误:二进制表达式的操作数无效-> [std::set::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;