当我试图迭代一个map及其列表成员时,我得到了这个错误:
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;
}有什么建议吗?
发布于 2012-05-23 20:56:01
这里有一个语法错误:
list<int>iterator::应该是
list<int>::iterator另外,
(*it).second().begin()应该是
(*it).second.begin()发布于 2012-05-23 21:41:16
您可以使用以下命令删除内部for循环-
std::copy( it->second.begin(), it->second.end(),
std::ostream_iterator<int>(std::cout, " ") );这也意味着您可以去掉ii的声明。
发布于 2013-11-25 19:06:11
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;
}https://stackoverflow.com/questions/10720359
复制相似问题