我正在尝试对索引向量进行排序,并按照与常规向量已经排序相同的方式对其进行排序。这个语句可以正常工作并在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]; });
请帮忙!
答案 0 :(得分:2)
使用仿函数:
struct Sorter
{
bool operator()(...)
{ /* logic * / }
};
这应该仍然适用于旧版本的编译器......