[英]Iterate over map<boost::tuple<int, string>, int> in C++
[英]iterating over c++ map<int, list<int>>
我在嘗試迭代地圖及其列表成員時收到此錯誤:
error: 'template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator' used without template parameters
invalid use of qualified-name '<declaration error>::ii'
error: 'ii' was not declared in this scope
error: 'struct std::_Rb_tree_iterator<std::pair<const int, std::list<int, std::allocator<int> > > >' has no member named 'second'
error: 'struct std::_Rb_tree_iterator<std::pair<const int, std::list<int, std::allocator<int> > > >' has no member named 'second'
這是代碼(之前正確填充了地圖):
map<int, list<int> >::iterator it;
list<int>iterator:: ii;
for(it=this->mapName.begin(); it!=this->mapName.end(); ++it){
cout<<(*it).first<<" { ";
for(ii = (*it).second().begin(); ii!=(*it).second.end(); ++ii){
cout<<(*ii)<<" ";
}
cout << " }" << endl;
}
有什么建議嗎?
這里有語法錯誤:
list<int>iterator::
應該
list<int>::iterator
也,
(*it).second().begin()
應該
(*it).second.begin()
你可以取消內部for循環 -
std::copy( it->second.begin(), it->second.end(),
std::ostream_iterator<int>(std::cout, " ") );
這也意味着你可以擺脫ii
的聲明。
map<int, list<int> >::iterator it;
list<int>::iterator ii;
for(it=this->mapName.begin(); it!=this->mapName.end(); ++it){
cout<<(*it).first<<" { ";
for(ii = (*it).second.begin(); ii!=(*it).second.end(); ++ii){
cout<<(*ii)<<" ";
}
cout << " }" << endl;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.