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 доступен, или определите пользовательский класс в противном случае.

Другие вопросы по тегам