【发布时间】:2014-07-11 13:10:31
【问题描述】:
我将从我想做的事情开始。我有一个充满点的向量。
vector<Vec2f> points;
我想根据它们与起点的距离对它们进行分组,如果该点更远,则创建一个新条目并执行相同操作。
例如,第一个点在 50、50 处,并且在 0,0 - 100,100 的距离内有几个点,那么在不同距离内有更多的点。
这是我最后想要的数据元素:
vector<vector<Vec2f>> groupedpoints;
为了填充分组点,我将创建一个 for 循环,将每个 Vec2f 点数据元素与第一个 Vec2f 数据元素进行比较。如果条件不满足并且点太远,我会 push_back groupedpoints 并开始填充它。
groupedpoints[clusternumber][clusterpointnumber]
所以第一个点将放在 groupedpoints[0][0] 其他符合条件的点将放在 groupedpoints[0][1....] 如果找到不符合条件的点,我将在 groupedpoints[1][0] 中创建一个新条目,然后将后续点放在 groupedpoints[1][1....] 中,依此类推,直到所有点是分类的。
问题是我不知道如何初始化分组点中的新条目,.push_back 方法将存储所有值。
有什么办法可以克服吗?我有类似的解决方法:
groupedpoints.resize(1);
groupedpoints[0].push_back(points[0]);
但我不想每次在最后需要一个值时都调整向量的大小。如果没有调整大小,我在第一次写入时就会出错 - 向量下标超出范围。如果我调整它的大小,一切正常。
【问题讨论】:
-
请说明slines和lines的含义。我以为你想将
points中的元素放入groupedpoints那么你想在slines中推回什么? -
对不起。在某个时候,我回到了自己的编码世界并在那里使用了变量:D slines = groupedpoints points = lines(编辑过的原始帖子)