У меня есть функция в структуре, которая сортирует вектор в структуре. Но чтобы сравнить два элемента в векторе, мне нужно значение другой переменной внутри той же структуры. Мне было интересно, где я должен держать перегрузку оператора или функцию сравнения для такого рода работы. Я дал образец в следующей пасте.
#include<vector>
#include<algorithm>
struct Square{
int color; //value 1 to 10
};
struct State{
vector<Square> list;
int color_weight[] = {4,3,5,2,4,1,6,4,5,9}; //These values keep changing.
bool operator<(Square& a, Square& b);
void sortTheList();
};
bool State::operator<(Square& a, Square& b){
if (color_weight[a.color]< color_weight[b.color]){
return true;
}
return false;
}
void Square::sortTheList(){
sort(list.begin(),list.end());
}
Это не работает, конечно. Я пробовал много других подписей и области действия для функции сравнения, но, похоже, ничего не работает.
Есть идеи, что тут можно сделать?