21xrx.com
2025-03-24 19:52:43 Monday
文章检索 我的文章 写文章
C++:如何合并两个 vector?
2023-07-01 22:03:26 深夜i     144     0
C++ 合并 两个 vector

在C++编程中,vector是一种非常常用的数据结构,它可以动态地存储元素,并支持随机访问和修改元素。有时候我们需要将两个vector合并成一个,并且保持原有的元素顺序不变,那么应该怎么做呢?

C++提供了一个很方便的方法来实现vector合并,即使用std::vector::insert()函数,该函数接受一个迭代器作为参数,并将另一个vector插入到当前vector的指定位置。具体实现如下:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
  vector<int> v1 = 2;
  vector<int> v2 = 4;
  v1.insert(v1.end(), v2.begin(), v2.end());
  for (auto it = v1.begin(); it != v1.end(); ++it)
    cout << *it << " ";
  return 0;
}

在上面的代码中,我们首先定义了两个vector v1和v2,它们分别包含了1~3和4~6这两个序列。然后通过调用v1的insert()函数,将v2的所有元素插入到v1的末尾。最后我们遍历v1中的所有元素,并输出结果。

需要注意的是,insert()函数的第一个参数必须是迭代器类型,可以通过调用end()函数获取当前vector的末尾迭代器。第二个和第三个参数分别是要合并的另一个vector的begin()和end()迭代器。

除了使用insert()函数,C++11标准也提供了一个方便的方法来实现vector的合并,即使用std::vector::insert()与move_iterator一起使用。具体实现如下:

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{
  vector<int> v1 = 3;
  vector<int> v2 = 4;
  v1.insert(v1.end(), make_move_iterator(v2.begin()), make_move_iterator(v2.end()));
  for (auto it = v1.begin(); it != v1.end(); ++it)
    cout << *it << " ";
  return 0;
}

这种方法需要引入 头文件,并使用make_move_iterator()函数将v2的begin()和end()迭代器转换为move_iterator类型。之后同样是使用insert()函数将v2中所有元素插入到v1的末尾。

总结:在C++中合并两个vector有两个比较方便的方法,分别是使用std::vector::insert()函数和move_iterator。前者更为简单直接,后者在效率上可能稍有提高。需要根据具体情况选择合适的方法。

  
  
下一篇: C++的end()函数

评论区