Cplusplus std:: набор двумерного массива
Я новичок в C++ и мне нужно использовать Set
от STL
но я борюсь с концепцией.
У меня есть такой массив int my_data[3]
Я хочу создать (не знаю, возможно ли это) set
с местом для 3-х дюймов и что key
для set
будет int
это хранится в первом столбце.
Я также хочу сделать заказную сортировку.
Это то, что я пытался, но безуспешно.
struct sort_set {
bool operator() (const int& a, const int& b) const {
int* arr1 = (int*) a;
int* arr2 = (int*) b;
int diff = arr2[1] - arr1[1];
if (diff) {
return true;
} else if (diff == 0) {
int diff2 = arr2[2] - arr1[2];
if (diff2) {
return false;
}
}
return arr1[0] < arr2[0];
}
};
set<int[3],sort_set> data;
Может ли кто-нибудь указать мне правильное направление?
1 ответ
Решение
Вы не можете иметь массивы в качестве элементов контейнеров. Они не являются ни назначаемыми, ни копируемыми.
использование std::array<int, 3>
если у вас есть C++11 доступен, или определите пользовательский класс в противном случае.