c++ - 如何从 C++ 中的两个 vector 中获取相同的对

标签 c++ c++11

我定义了两个 vector : std::vector<std::pair<int, int> > vec1std::vector<std::pair<int, int> > vec2 .

我想从 vec1 中找到相同的对和 vec2 . 例如,vec1 = {{1,2}, {1,9}, {2,13}, {3,5}} , vec2 = {{8, 7}, {4,2}, {2,10}, {1,9}} .那么结果应该是{{1,9}} .

我该怎么做?

最佳答案

如果你用 std::sort 对 vector 进行排序,你就可以做到这一点然后使用 std::set_intersection通过以下方式找到它们的共同元素:

std::vector<std::pair<int, int>> v1 {{1,2}, {1,9}, {2,13}, {3,5}};
std::vector<std::pair<int, int>> v2 {{8,7}, {4,2}, {2,10} ,{1,9}};

std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());

std::vector<std::pair<int, int>> v_intersection;
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(),
                      std::back_inserter(v_intersection));

LIVE DEMO

关于c++ - 如何从 C++ 中的两个 vector 中获取相同的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001737/

相关文章:

c++ - GCC 是如何实现 C++ 标准分配器的?

c++ - 局部变量的引用崩溃

c++ - ctags 不适用于多态函数

c++ - std::transform 中的二元运算符,带有 unique_ptr 的 vector

c++ - 复制赋值运算符应该作为一般规则利用 std::swap 吗?

python - 通过 Cython 转换为 Python 的基本 C++ 函数

c++ - fscanf 多行 [c++]

c++ - visual studio下fortran和c++/c混合编程

c++ - 64 位系统可以运行包含一些内联汇编的 32 位软件吗?

c++ - 了解哪个构造函数被调用