c++ - Cplusplus std::set 二维数组

标签 c++ arrays stdset

我是 C++ 的新手,我需要使用 STL 中的 Set,但我在这个概念上苦苦挣扎。

我有一个这样的数组 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;

有人能指出我正确的方向吗?

最佳答案

您不能将数组作为容器的元素。它们不可分配也不可复制。

使用 std::array<int, 3>如果您有 C++11 可用,或者定义一个自定义类。

关于c++ - Cplusplus std::set 二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611188/

相关文章:

c++ - 在循环外定义变量

c++ - 从 c++ vector 中删除元素,其中删除条件取决于其他元素

c++ - 使用Eigen::Transpose <const Matrix3>的正确方法?

ios - 获取信息 JSON Google 图书 - IOS

javascript - 返回推送到数组的元素

c++ - std::set 带有自定义比较器的操作

c++ - 如何从 std::set 中的位置 i 删除项目?

c++ - new 的 c++ 关键字的奇怪用法

python - bool numpy 数组的子矩阵求和

c++ - 将 std::sets 合并到 std::vector