我在 C++ 中创建了一组粒子对来保存可能发生碰撞的粒子对,以进行简单的粒子模拟,如下所示:
std::set<std::pair<int, int>> uniquePairs;
填充后,我只想对模拟中的事件粒子进行迭代,以检查它们之间的距离以便稍后进行交互。我可以像这样迭代整个集合......
std::set<std::pair<int,int>>::iterator it;
for (it = uniquePairs.begin(); it != uniquePairs.end(); ++it)
{
std::cout << it->first << std::endl;
}
但是,这会引发 vector “超出范围”错误,因为我会尝试访问尚未存活的粒子。因此,我希望能够访问最多相同数量的活粒子的列表..即 N = keywords.size()。
请帮忙,
非常感谢!
最佳答案
问题中并不完全清楚,如果问题是“如何迭代容器的前 N 个元素?”,下面是执行此操作的方法。
void foo(std::set<std::pair<int,int>>& uniquePairs, int N) {
auto it = uniquePairs.begin();
for (int i = 0; i < N; ++i)
{
std::cout << it->first << std::endl;
++it;
assert(it != uniquePairs.end());
}
}
关于c++ - 如何迭代容器的前 N 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54769258/