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