我使用一个Map存储了一些键值对,现在需要按照值来排序,我考虑使用以下方式:
#include <iostream>
#include <map>
#include <string>
int main ()
{
std::map<std::string, int> map1;
std::multimap<int, std::string> multimap2;
map1.insert ( std::pair<std::string, int>( "one", 4) );
map1.insert ( std::pair<std::string, int>( "two", 2) );
map1.insert ( std::pair<std::string, int>( "three", 2) );
map1.insert ( std::pair<std::string, int>( "four", 1) );
for (auto it = map1.begin(); it != map1.end(); ){
multimap2.insert(std::pair<int, std::string>( it->second, it->first));
map1.erase(it++);
}
for (auto it = multimap2.rbegin(); it != multimap2.rend(); ++it)
std::cout << it->first << " --- " << it->second << '\n';
return 0;
}
这给了我:
4 --- 一个 2 --- 两个 2 --- 三个 1 --- 四个
虽然我需要这样的结果,但是否有更聪明、更高效的方法获得相同的结果呢? 它将需要处理一个相当大的数据集...
感谢您的时间 :)
std::pair<const std::string, int>
的对象。 - Frederic Lachassestd::copy
。虽然可能会慢一些。 - Mike Seymour