C++对不带lambda的索引向量进行排序

C++ sorting an index vector without lambda

本文关键字:向量 排序 索引 lambda C++      更新时间:2023-10-16

我正在尝试对一个索引向量进行排序,排序方式与常规向量的排序方式完全相同。这个语句工作正常,在visualstudio中编译正确,但我需要它在Linux中编译,所以我需要以某种方式重写该语句,以便使用旧版本的编译器。索引向量是通过这个来声明和初始化的,它在旧的编译器上仍然可以很好地工作:

vector<float> indexes(toBeSorted.size());
//initialize original index locations
for (float i = 0; i != indexes.size(); ++i) indexes[i] = i;

问题是这一行,它在Linux中中断:

sort(indexes.begin(), indexes.end(), [toBeSorted](float i1, float i2) {return toBeSorted[i1] > toBeSorted[i2]; });

请帮忙!

使用函数:

struct Sorter
{
  bool operator()(...)
  { /* logic * / }
};

这应该在旧版本的编译器中仍然有效。。。