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];});
相关推荐
nbplus_0075 分钟前
golang扩展 日志库ZAP[uber-go zap]切割 natefinch-lumberjack
开发语言·后端·golang·个人开发·日志切割·logger
GSDjisidi6 分钟前
日本IT-SIER/SES的区别详情、契约形态等
java·大数据·c语言·c++·php
划过手的泪滴t8 分钟前
【python】字典、列表、集合综合练习
开发语言·python·云计算·每日一练·数据类型
arsiya_jerry9 分钟前
使用nodejs输出著作权申请所需的word版源码
开发语言·node.js
YoungMLet12 分钟前
【QT】多元素控件
c语言·开发语言·c++·qt·ui
F_D_Z21 分钟前
R&RStudio 下载及安装(详尽版)
开发语言·r语言·rstudio
万界星空科技42 分钟前
介绍一款Java开发的商业开源MES系统
java·开发语言·经验分享·科技·5g·开源·制造
PhyliciaFelicia1 小时前
空间数据采集与管理:为什么选择ArcGISPro和Python?
开发语言·python·深度学习·机器学习·arcgis·数据分析
paidaxing_s1 小时前
【FFMPEG基础(一)】解码源码
linux·c++·ffmpeg
袁袁袁袁满1 小时前
Python之MoviePy视频编辑模块介绍与应用
开发语言·python·音视频·moviepy·视频编辑模块