有时候我们需要对数组中的元素进行排序并且得到下标的排序,此时我们可以采用iota函数对vector进行赋值,重载sort函数实现hh
iota函数 C++11 引入,是一个用于产生连续值的函数,包含在#include<numeric>
```
vector<int>v(n);
int nums[10];
iota(v.begin(),v.end(),0)
iota(nums,nums+10,100)
```
模板
```
template <class ForwardIterator, class T>
void iota (ForwardIterator first, ForwardIterator last, T val)
{
while (first!=last) {
*first = val;
++first;
++val;
}
}
```
模板中的T只要支持自增操作就可以 使用
正常的int float double 支持自增操作,而char同样支持自增操作 ,如 char c= 'a'
c++ ; //c 变成了’b‘ 是ascll 码的增加
利用iota 函数 我们可以新开一个数组来存储元素的下标,重载sort函数得到元素排序后的下标
如:
vector<int>nums //存放了n个数据
vector<int>idx(n);
iota(idx.begin(),idx.end(),0);
sort(idx.begin(),idx.end(),[&](int i,int j){return nums[i]<nums[j] ;});
标签:sort,初始化,idx,nums,int,vector,iota,first From: https://www.cnblogs.com/ycf-blog/p/16831436.html