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];});
相关推荐
wuguan_1 分钟前
C#:多态函数重载、态符号重载、抽象、虚方法
开发语言·c#
小信啊啊1 分钟前
Go语言数组与切片的区别
开发语言·后端·golang
计算机学姐14 分钟前
基于php的摄影网站系统
开发语言·vue.js·后端·mysql·php·phpstorm
微笑倾城15 分钟前
Windows平台下CMake工程中使用protobuf
c++·cmake
全栈陈序员21 分钟前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习
我不是程序猿儿26 分钟前
【C#】ScottPlot的Refresh()
开发语言·c#
Neolnfra27 分钟前
渗透测试标准化流程
开发语言·安全·web安全·http·网络安全·https·系统安全
计算机学姐28 分钟前
基于php的旅游景点预约门票管理系统
开发语言·后端·mysql·php·phpstorm
AA陈超30 分钟前
枚举类 `ETriggerEvent`
开发语言·c++·笔记·学习·ue5
Filotimo_34 分钟前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows