我有一个向量,该向量具有4个坐标点(浮点型)。从向量中读取值,并将其存储在4个不同的变量中。我想从四个点中找到最小的x坐标值,并将其分配为第一个变量。其余变量遵循与原点相同的顺序。
例如:p1到p4代表坐标点。
p1 =(319.402,213.309)
p2 =(184.437,312.164)
p3 =(54.9806,183.36)
p4 =(187.458,95.2848)
最小x坐标为54.9806。找到最小值后,我想以新顺序将坐标值分配给新变量。
p1_new =(54.9806,183.36)
p2_new =(187.458,95.2848)-先前为p4
p3_new =(319.402,213.309)-先前为p1
p4_new =(184.437,312.164)-先前为p2
最小值在一个迭代之间可能有所不同。
感谢您的任何帮助。
让我们将问题分为几个部分:a)找到最小的x值b)建立后,您以模量向量的大小运行向量中的位置
代码:(并不太强调适当的样式)
vector<pair<double, double>> vec = { {319.402,213.309} ,{184.437,312.164 },{54.9806,183.36} ,{187.458,95.2848} }
, vec2;
double minX = vec[0].first;
int minIndx = 0;
for (int i = 1; i < static_cast<int>(vec.size()); i++)
if (vec[i].first < minX)
{
minIndx = i; //saves the index
minX = vec[i].first; //saves the minX value
}
vec2.emplace_back(vec[minIndx]); //put it in the result vector (vec2)
//emplace everything else to the result vector modulu vec.size()
for (int i = minIndx + 1; i != minIndx; i = (i + 1) % static_cast<int>(vec.size()))
vec2.emplace_back(vec[i]);
//prints the result
for (const auto &v: vec2)
cout << "(" <<v.first << ", " <<v.second << ")\n";
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句