c – 创建一个排序向量的向量
发布时间:2020-12-16 03:08:36 所属栏目:百科 来源:网络整理
导读:参见英文答案 c++ sort keeping track of indices4个 变量x是n个int的向量,我想以升序对向量进行排序.但是,由于这个问题范围之外的原因,我想要保持原状.因此,而不是实际排序x的内容,我想创建另一个n个索引向量,其中每个索引引用x中的相应值,如果x被排序. 例
参见英文答案 >
c++ sort keeping track of indices4个
变量x是n个int的向量,我想以升序对向量进行排序.但是,由于这个问题范围之外的原因,我想要保持原状.因此,而不是实际排序x的内容,我想创建另一个n个索引向量,其中每个索引引用x中的相应值,如果x被排序. 例如: std::vector<int> x = {15,3,20}; std::vector<int> y; // Put the sorted indices of x into the vector y for (int i = 0; i < 4; i++) { std::cout << y[i]; } 应该输出: 2 1 0 3 对应于x中的值: 0 3 15 20 我可以想到很多及时的实现方法,但是我想知道STL是否有内置的功能可以有效地为我执行这个功能? 解决方法
1)创建y作为索引的向量(整数范围)
2)使用从x返回索引元素的比较器对此范围进行排序 #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> x = {15,20}; std::vector<int> y; std::vector<int> y(x.size()); std::size_t n(0); std::generate(std::begin(y),std::end(y),[&]{ return n++; }); std::sort( std::begin(y),[&](int i1,int i2) { return x[i1] < x[i2]; } ); for (auto v : y) std::cout << v << ' '; return 0; } Live demo. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 正则表达式笔记
- c# – 如何在运行时将图像加载到WPF?
- Sqlite 查询新增行的自增id (类似mssql的@@Identity)
- c# – 查询过去24小时内创建的所有计算机对象的LDAP
- XML---android解析XML总结(SAX、Pull、Dom三种方式)
- 探讨.get .post .ajax ztree 还有后台servlet传递数据的相关
- ruby-on-rails – 在rails上的ruby中的undefined方法`unser
- c – 强制所有类在多级继承层次结构中实现/覆盖“纯虚拟”方
- 快速生成Plugman中的"lib-file"、"source-file
- c – 为什么允许冗余类名限定符?