21xrx.com
2024-11-25 06:00:05 Monday
登录
文章检索 我的文章 写文章
C++:如何合并两个 vector?
2023-07-01 22:03:26 深夜i     --     --
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()函数

评论区

{{item['qq_nickname']}}
()
回复
回复