c++ - 在 C++ 中的大 vector 中搜索

标签 c++ c++11

我有以下 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/

相关文章:

c++ - 我们如何理解set <pair <int,int >>的迭代器?

c++ - C++中的余弦函数没有任何数学函数

c++ - 在对象中存储和检索不同的数据类型

c++ - 等待 main() 返回?

c++ - 通过引用将循环计数器或范围声明传递给线程有什么区别?

C++ - 在函数内部声明数组

c++ - 是否有任何免费工具可以帮助自动生成代码?

c++ - 在头文件中初始化可自定义结构的 vector

c++ - 为什么 static_cast 不使用转换运算符指向 const 的指针?

c++ - 为什么在锁定 weak_ptr 时会出现访问冲突?