C ++对没有lambda的索引向量进行排序

时间:2013-12-03 14:20:07

标签: c++ sorting vector lambda

我正在尝试对索引向量进行排序,并按照与常规向量已经排序相同的方式对其进行排序。这个语句可以正常工作并在visual studio中正确编译,但我需要它在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]; });

请帮忙!

1 个答案:

答案 0 :(得分:2)

使用仿函数:

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

这应该仍然适用于旧版本的编译器......