【发布时间】:2018-03-01 07:43:11
【问题描述】:
我有一个vector <tuple<int a, int b, Vec4i c>>,并且我已经按照 a 对元组进行了升序排序。结构是这样的。
vect = { 42,324,{}; //[0]
43,231,{};
45,97 ,{};
73,32 ,{}; //[1]
112,87,{};
114,249,{}; //[2]
}
如果元素之间的差异小于 5,我正在尝试比较“a”并将它们分组。if(a[i+1]-a[i] >= 5
在每个组中,找到 b 的最大元素并将关联的 c 推回到新向量。
元组的实现如下:
vector<Vec4i> horiz;
vector<int> ly, lx;
using tuple_t = std::tuple<int, int, Vec4i>;
vector <tuple_t> vect;
int n = ly.size();
auto sort_A = [&](tuple_t lhs, tuple_t rhs)
{ return (get<0>(lhs) < get<0>(rhs)); };
for (int i = 0; i < n; i++)
vect.push_back(make_tuple(ly[i],lx[i],horiz[i]));
sort(vect.begin(), vect.end(), sort_A);
【问题讨论】:
-
是的,没错。你必须实现自己的
Compare。 -
实现你的比较功能,它会更容易给你建议。 “是否正确”是什么意思?
-
如果你有
a值40, 44, 48, 52, 56等,那是一组吗? -
该死的,这是一个好问题,我没有考虑过。我理想的分组是 {40,44},{48,52},{56}