У меня есть шаблонный вектор v
из class T
(либо float
, либо double
), содержащий N*D
(= npoints*ndims
) элементов.
Например, для D = 2 v
будет содержать [ p0[0], p0[1], p1[0], p1[1], p2[0], p2[1], ... pN-1[0], pN-1[1] ]
.
Я хотел бы получить вектор lsort
из N
индексов, которые соответствуют сортировке точек по возрастанию, сначала по координате 0, а затем по координате 1.
Нет совпадающих точек.
Например, если точки (p0 ... pN-1) равны ((0,0), (0,1), (1,2), (1,0)), я имею в виду:
v = [ 0, 0, 0, 1, 1, 2, 1, 0 ]
lsort = [ 0, 1, 3, 2 ]
, поскольку p3 имеет ту же координату 0, что и p2, но более низкую координату 1.
Меня не волнует получение отсортированного вектора (я мог бы сделать это, как только у меня будет lsort
).
Раньше я делал сравнения с пользовательскими операторами, но я не выясняю, как сравнение пропускает все остальные элементы.