C++ 如何在C++。。?性能问题? typedef映射iMap; typedef映射OutMap; OutMap mx; 对它进行迭代器输出; 迭代器it_i; for(it_out=mx.begin();it_out!=mx.end();it_out++){ 不能进一步改善,除非 您可以使用增量前而不是增量后,即++it\u out而不是it\u out++ 您可以在cout中使用'\n'而不是endl。使用'\n'可以合理地提高输出操作的性能,因为endl首先将'\n'放入输出缓冲区,然后将其刷新到目标(stdout)这使得它运行缓慢

C++ 如何在C++。。?性能问题? typedef映射iMap; typedef映射OutMap; OutMap mx; 对它进行迭代器输出; 迭代器it_i; for(it_out=mx.begin();it_out!=mx.end();it_out++){ 不能进一步改善,除非 您可以使用增量前而不是增量后,即++it\u out而不是it\u out++ 您可以在cout中使用'\n'而不是endl。使用'\n'可以合理地提高输出操作的性能,因为endl首先将'\n'放入输出缓冲区,然后将其刷新到目标(stdout)这使得它运行缓慢,c++,C++,请注意,对于循环,您应该在内部的中增加it\u i(而不是it\u out)。我认为这是一个输入错误。除了 您可以使用增量前而不是增量后,即++it\u out而不是it\u out++ 您可以在cout中使用'\n'而不是endl。使用'\n'可以合理地提高输出操作的性能,因为endl首先将'\n'放入输出缓冲区,然后将其刷新到目标(stdout)这使得它运行缓慢 请注意,对于循环,您应该在内部的中增加it\u i(而不是it\u out)。我想这是一个输入错误。这要看情况而定。它有多快,

请注意,对于循环,您应该在内部的
中增加
it\u i
(而不是
it\u out
)。我认为这是一个输入错误。

除了

  • 您可以使用增量前而不是增量后,即
    ++it\u out
    而不是
    it\u out++
  • 您可以在cout中使用
    '\n'
    而不是
    endl
    。使用
    '\n'
    可以合理地提高输出操作的性能,因为
    endl
    首先将
    '\n'
    放入输出缓冲区,然后将其刷新到目标(
    stdout
    )这使得它运行缓慢

请注意,对于
循环,您应该在内部的
中增加
it\u i
(而不是
it\u out
)。我想这是一个输入错误。

这要看情况而定。它有多快,您希望它有多快?您需要更深入一些…
std::map
总体来说相当快,但对您来说性能不够吗?C++11(许多实现已经提供了类似的功能)如果您不需要对
std::unordered_map
进行排序,请提供
std::unordered_map
。有什么理由不能使用
std::Pair
?@MikeBantegui他可能偶尔需要给定双精度的所有贴图,性能差异很小。这取决于。它有多快?您希望它有多快?您需要去迪伊per…
std::map
总体来说速度相当快,但对您来说性能还不够吗?C++11(许多实现已经提供了类似的功能)如果您不需要对
std::map
进行排序,请提供
std::unordered\u map
。是否有任何理由您不能使用
std::Pair
?@MikeBantegui他可能偶尔需要给定双精度的所有贴图,并且性能差异很小。
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;
}