У меня есть вектор вектора, содержащих элементы типа длиной следующим образом:Сортировка вектора векторов
vector< vector<long> > Data(N,vector<long>(M));
Я должен сортировать эти векторы на основе их значений, т.е. для двух векторов
Data[i] & Data[j]
if for some k Data[i][k]< Data[j][k]
and Data[i][t]==Data[j][t] for all 0<=t<=(k-1),
then Data[i] should come before Data[j] in the final vector
Не для указанной задачи я написал следующий код:
sort(Data.begin(),Data.end(),myfunc);
where
bool myfunc(vector<long> vec1,vector<long> vec2){
int i=0;
while(i<vec1.size()){
if(vec1[i]<vec2[i]){
return false;
}
else if(vec1[i]>vec2[i]){
return true;
}
i++;
}
return false;
}
Однако, я не получаю желаемый результат. Фактически входные и выходные векторы одинаковы. Где я неправ?? Я что-то упускаю??
результат будет таким же, но функция должна быть 'BOOL MyFunc (Const вектор & vec1, Const вектор & vec2)' –
Я не уверен, что я следую нужная логика, но что не так с простым вызовом 'std :: sort'? – juanchopanza