C++ ——排序并保留索引

C++自带的排序函数sort只能获得排好序的值,没办法像Matlab一样同时返回排序索引。

下面使用c++11中的 lambda来为sort函数添加一个模式:

cpp 复制代码
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;

template <typename T>
vector<size_t> sort_indexes(const vector<T> &v) {

  // 初始化索引向量
  vector<size_t> idx(v.size());
  //使用iota对向量赋0~?的连续值
  iota(idx.begin(), idx.end(), 0);

  // 通过比较v的值对索引idx进行排序
  sort(idx.begin(), idx.end(),
       [&v](size_t i1, size_t i2) {return v[i1] < v[i2];});
  return idx;
}

上面的是升序排列,如果想要降序排列,只需要更改为:

cpp 复制代码
[&v](size_t i1, size_t i2) {return v[i1] > v[i2];});
相关推荐
c++之路31 分钟前
C++信号处理
开发语言·c++·信号处理
Legendary_0082 小时前
LDR6500:USB‑C DRP PD协议芯片技术详解与应用实践
c语言·开发语言
2301_800976933 小时前
正则表达式
开发语言·python·正则表达式
故事还在继续吗3 小时前
C++20关键特性
开发语言·c++·c++20
青少儿编程课堂3 小时前
2026青少儿信息素养大赛备赛指南!Python/Scratch/C++备考要点
开发语言·c++·python
旖-旎3 小时前
深搜练习(电话号码字母组合)(3)
c++·算法·力扣·深度优先遍历
AIFarmer4 小时前
【无标题】
开发语言·c++·算法
昇腾CANN4 小时前
TileLang-Ascend 算子性能优化方法与实操
开发语言·javascript·性能优化·昇腾·cann
John_ToDebug4 小时前
WebHostView 与 TabStrip 交互机制深度解析
c++·chrome·windows