如何在C ++中访问地图中的地图..?性能问题?

时间:2011-10-19 17:55:21

标签: c++

typedef map<int, string> iMap;
typedef map<double, innerMap> OutMap;

OutMap mx;

map<double, iMap >::iterator it_out;
map<int, string>::iterator it_i;

for ( it_out=mx.begin() ; it_out != mx.end(); it_out++ ) {
   cout << "\n\nNew element\n" << (*it_out).first << endl;
   for( it_i=(*it_out).second.begin(); it_i != (*it_out).second.end(); it_out++)
     cout << (*it_i).first << " => " << (*it_i).second << endl;
}

我很确定上面的代码很好...... 有任何性能问题......?

1 个答案:

答案 0 :(得分:3)

除了

之外,它无法进一步改进
  • 您可以使用预增量而不是后增量,即++it_out而不是it_out++
  • 您可以在cout中使用'\n'代替endl。使用'\n'会以合理的余量提高输出操作的性能,因为endl首先将'\n'放入输出缓冲区,然后将其刷新到目标(stdout case)这使得它运行缓慢。

请注意,您应该在内部it_i循环中增加it_out(而不是for)。我想这是一个错字。