获取按地图值排序的地图键矢量的最快方法?

Bar*_*uch 2 c++ stl

我有一个map<int int>.我需要得到第一个int(键)的向量,但是以第二个int的顺序(值)排序.什么是最快的方法呢?

Ste*_*sop 5

任何告诉你他们有"最快"方式的人都是骗子,因为他们不知道你正在使用什么硬件/ C++实现等.

这是一种方式:

typedef pair<int,int> item;

vector<item> mytmp(mymap.begin(), mymap.end());
sort(mytmp.begin(), mytmp.end(), [](item lhs, item rhs) { return lhs.second < rhs.second; });

vector<int> myvec;
myvec.reserve(mytmp.size());
transform(
    mytmp.begin(), mytmp.end(),
    back_inserter(myvec);
    [](item i) { return i.first; }
);
Run Code Online (Sandbox Code Playgroud)