C++ 对向量中的较高值和较低值进行排序
我得到了一个包含4个未排序元素的向量,该向量如下所示:C++ 对向量中的较高值和较低值进行排序,c++,sorting,vector,struct,C++,Sorting,Vector,Struct,我得到了一个包含4个未排序元素的向量,该向量如下所示: vector<positionInfo> objects 现在,这4个元素没有排序,但我希望它们按特定顺序排列,即: 元素1([0])必须具有最低的Y和X位置 元素2([1])必须具有最高的X位置,但具有最低的Y位置 元素3([2])必须具有最高的Y和X位置 元素4([3])必须具有最低的X位置,但具有最高的Y位置 这只是为了方便地访问构成立方体的4个点中的任何一个,使用大量变量可能会得到我想要的,但这并不是真正的最优,我
vector<positionInfo> objects
现在,这4个元素没有排序,但我希望它们按特定顺序排列,即:
- 元素1([0])必须具有最低的Y和X位置
- 元素2([1])必须具有最高的X位置,但具有最低的Y位置
- 元素3([2])必须具有最高的Y和X位置
- 元素4([3])必须具有最低的X位置,但具有最高的Y位置
new_objects[0] = find_elememt_with_lowet_x_and_y(objects);
new_objects[1] = find_element_with_highets_x_and_lowest_y(objects);
//....
objects = new_objects;
有几点:
- 四个点不构成立方体-它有8个顶点。如果你想确定一个立方体,你可能需要3维。我想你说的是正方形
- 如果您实际上不是在处理正方形,但使用随机4点,您的排序不清楚-
,例如,不要求在同一点上具有最低的元素1([0])必须具有最低的Y和X位置
和Y
X
- 循环所有四个顶点
- 找到最小值和最大值
和x
sy
- 因为您对所处理的情况有把握,所以可以从这4个值中创建4个兴趣点
std::sort
例如(3个步骤):
重载
你的问题有点模棱两可-最低的Y和X位置到底意味着什么?(例如,如果我有(1,10)和(7,2),最低的Y和X位置问题的答案是什么?)答案是否可以是不在向量中的点,对象
?不,仅使用4个元素,它们决定最低的X和Y位置,很明显,结构中的Y_pos和X_pos的值是4中最小的。那么,如果我的四个输入是(1,10),(7,2),(12,0),(10,1),你希望你的四个答案是什么?
new_objects[0] = find_elememt_with_lowet_x_and_y(objects);
new_objects[1] = find_element_with_highets_x_and_lowest_y(objects);
//....
objects = new_objects;
bool
operator < (const positionInfo & left, const positionInfo & right)
{
return left.X + left.Y < right.X + right.Y;
}
std::sort( &objects[0], &objects[4] );
if ( objects[1].X < objects[2].X )
std::swap( &objects[1], &objects[2] );