Я хотел бы проверить все элементы вектора друг против друга. Проверяя условие, элемент должен быть удален.
Один из подходов заключался в удалении элементов с помощью вложенных циклов
for (int a = 0; a < rs.size(); a++)
{
Point A = rs[a];
for (int b = 1; b <= rs.size(); b++)
{
Point B = rs2[b];
float distance = sqrt(pow(B.x - A.x, 2) + pow(B.y - A.y, 2) * 1.0);
if (distance < 10.0)
{
if (distance > 0)
{
rs.erase(rs.begin() + b);
}
}
}
}
но это повлияет на вектор и его размер во время выполнения.
Второй подход состоял в том, чтобы собрать индекс b в unordered_set, но как я могу удалить элементы с соответствующим индексом в исходном векторе?
unordered_set<int> index;
for (int a = 0; a < rs.size(); a++)
{
Point A = rs[a];
for (int b = 0; b < rs.size(); b++)
{
Point B = rs2[b];
float distance = sqrt(pow(B.x - A.x, 2) + pow(B.y - A.y, 2) * 1.0);
if (distance < 10.0)
{
if (distance > 0)
{
index.insert(b);
}
}
}
}
Как и следовало ожидать, этот подход также не работает:
for (const int& idx : index)
{
rs.erase(rs.begin() + idx);
}
Любая помощь?