c++ - 获取按 map 值排序的 map 键 vector 的最快方法?

标签 c++ stl

我有一个 map<int int> .我需要获得第一个 int(键)的 vector ,但按第二个 int 的顺序(值)排序。最快的方法是什么?

最佳答案

任何告诉您他们拥有“最快”方法的人都是骗子,因为他们不知道您使用的是什么硬件/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; }
);

关于c++ - 获取按 map 值排序的 map 键 vector 的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292719/

相关文章:

c++ - OpenCV2.2 cvCaptureFromCAM 问题...只返回绿屏。 (罗技 C260 摄像头)

c++ - C++20 中弃用的 lambda 捕获

c++ - 我正在编写一个日历来存储带有多个生日对象的生日我是迭代器的新手并且在使用 find() 时遇到编译器错误

c++ - 默认容器参数

c++ - 之前和之后的 lower_bound 和 upper_bound

c++ - 如何计算 double 组中特定范围内的值数

c++ - 如何针对发布构建的库 (MSVCRT.lib) 构建调试 .exe (MSVCRTD.lib)?

c++ - 在不同浮点精度之间切换时使用我自己的 std::mersenne_twister_engine 模板参数

c++ - 我的代码在第二次调用 STL::stack::push() 时出现段错误

c++ - `std::vector<primitive>::clear()` 是常数时间操作吗?