-1

マルチマップのベクトルを印刷するにはどうすればよいですか? たとえば、次のようなベクトルがあります。

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;
   }
}
4

1 に答える 1

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;
  }
}
于 2013-03-07T03:55:42.130 に答える