我有以下 vector :
std::vector<A*> vec;
std::vector<std::pair<A*, A*>> vec_pair;
vec_pair 的大小远远大于 vec 的大小。我想在 vec_pair 中找到一对,两个成员都在 vec 中。
vec_pair
的内容是不变的。但是,每次迭代后 vec
的内容都会发生变化,我想再次进行测试。
我知道我可以做一个 for 循环并进行检查。但是,考虑到规模差异 和工作的重复性,我正在寻找一种聪明而有效的方法来完成这项工作。
最佳答案
如果您不打算更改 vec
的内容, 创建一个 std::unordered_set<A*>
具有相同的内容并在那里搜索事件。在 unordered_set
中搜索大约为 O(1),因此这将是一个简单的胜利。
构造 unordered_set
的最简单和最有效的方法来自vector
是使用带两个迭代器的构造函数:
unordered_set<A*> us(vec.begin(), vec.end());
关于c++ - 在 C++ 中的大 vector 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384703/