2015-07-20 69 views
-3

我试图通过一组字符串进行迭代,宣称这里:迭代:无效的操作数为二进制表达

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(); ]

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

任何帮助将不胜感激,谢谢。

+2

为什么你使用set-ints集上的字符串迭代器? o.O –

回答

3

而不是

std::set<int>::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; 
+2

在C++ 11中根本不需要迭代器,您可以直接使用基于范围的循环:'for(const auto&value:aB)' – Jack

2

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

​​
相关问题