所以..我有2个向量:xmax和ymax,它们代表点列表的x和y坐标。我想删除其中xmax [i] == xmax [i-1]和ymax [i] == ymax [i-1]的变量(总而言之,我想删除具有相同的坐标)。这是我正在使用的代码:
std::vector<double> xx, yy;
for (int i = 0; i < xmax.size(); i++) {
if (i > 0 && xmax[i] == xmax[i - 1] && ymax[i]==ymax[i-1])
continue;
xx.push_back(xmax[i]);
yy.push_back(ymax[i]);
}
但是我想知道是否有一种简单的方法来删除变量,而无需为此创建新的向量。
答案 0 :(得分:2)
我建议切换到一对整数对的单个向量(而不是两个单独的向量):
std::vector<std::pair<int, int>> points = {{1, 1}, {5, 2}, {5, 2}, {7, 10}};
然后您可以使用std::unique()
。
如果定义比较器功能:
bool point_compare(const std::pair<int, int> &p1, const std::pair<int, int> &p2) {
return p1.first == p2.first && p1.second == p2.second;
}
然后您可以像使用std::unique()
:
auto last = std::unique(points.begin(), points.end());
points.erase(last, points.end());
在此处查看实际操作:https://ideone.com/fZM9b2