2015-07-20 64 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

您應該使用原始集合的類型的迭代器。所以在你的情況下,它將是:

​​
相關問題