如何打印多图的矢量? 例如,我有一个看起来像这样的矢量:
typedef std::multimap<double,std::string> resultMap;
typedef std::vector<resultMap> vector_results;
修改
for(vector_results::iterator i = vector_maps.begin(); i!= vector_maps.end(); i++)
{
for(vector_results::iterator j = i->first.begin(); j!= i->second.end(); j++)
{
std::cout << j->first << " " << j->second <<std::endl;
}
}
答案 0 :(得分:1)
外部i
循环中的for
变量指向resultMap
,这意味着j
变量的类型必须为resultMap::iterator
。将您的循环重写为
for(vector_results::const_iterator i = vector_maps.begin(); i != vector_maps.end(); ++i)
{
for(resultMap::const_iterator j = i->begin(); j != i->end(); ++j)
{
std::cout << j->first << " " << j->second << std::endl;
}
}
我将迭代器类型更改为const_iterator
,因为迭代器没有修改容器元素。
如果您的编译器支持基于C ++ 11的基于范围的for
循环,则可以更简洁地编写代码
for( auto const& i : vector_maps ) {
for( auto const& j : i ) {
std::cout << j.first << " " << j.second << std::endl;
}
}