迭代:二进制表达式的无效操作数
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;
我正在尝试遍历一组字符串,在此处声明:
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;