【发布时间】:2014-03-24 13:44:20
【问题描述】:
我是 C++ 新手,需要使用 STL 中的 Set,但我对这个概念感到困惑。
我有一个这样的数组int my_data[3]
我想创建(不知道这是否可能)一个set,其空间为 3 个整数,而set 的key 将是存储在第一列的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;
有人能指出正确的方向吗?
【问题讨论】:
-
您的
sort_set不是严格的弱排序。例如,对于a = {0,1,0}和b = {0,2,0},您的sort_set()(a,b)和sort_set()(b,a)都为真。