2013-12-03 3 views
1

Я пытаюсь сортировать вектор индексов, сортируя его точно так же, как мой обычный вектор уже отсортирован. Это утверждение работает правильно и правильно компилируется в visual studio, но мне нужно его компилировать в Linux, поэтому мне нужно как-то переписать инструкцию для работы с более старой версией компилятора. Вектор индекс объявляется и инициализируется этим, который до сих пор отлично работает на старом компиляторе:C++ сортировка индексного вектора без лямбда

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

Эта линия не волшебно перерыв в Linux, если он не делает что-то вроде вызова неопределенное поведение. Если вы имеете в виду, что он не компилируется, это не проблема Linux. – chris

+1

, о ком компилятор мы говорим о Linux? – Hulk

+1

Какой компилятор вы используете? Если GCC, попробуйте параметр '-std = C++ 0x', чтобы включить возможности C++ 11. –

ответ

2

Используйте функтор:

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

Это должно работать в старой версии компилятора ...

Смежные вопросы