C++如何合并若干个vector

如何合并若干个vector
例: 
    vector<int> vec1 = {...};
    vector<int> vec2 = {...};// vec1和vec2都存有内容

    vector<int> vec3;//vec3是空的
    vec3.insert(vec3.end(),vec1.begin(),vec1.end())//将vec1压入
    vec3.insert(vec3.end(),vec2.begin(),vec2.end())//继续将vec2压入


    经过两次压入之后,vec3中将顺序存储vec1和vec2的内容.
### C++ 中 `vector` 的赋值方法 在 C++ 编程中,可以采用多种方式将一个 `std::vector` 的内容赋值给另一个 `std::vector`。以下是几种常见的实现方法及其特点: #### 方法一:通过拷贝构造函数 可以通过拷贝构造函数创建一个新的 `vector` 并初始化为已有 `vector` 的副本。 ```cpp #include <vector> std::vector<int> v2 = {1, 2, 3}; std::vector<int> v1(v2); // 使用拷贝构造函数 ``` 这种方法简洁高效,适用于需要新分配内存的情况[^3]。 #### 方法二:使用 `assign` 函数 `assign` 是一种显式的赋值方法,能够清空目标 `vector` 后重新填充源数据。 ```cpp #include <vector> std::vector<int> v2 = {1, 2, 3}; std::vector<int> v1; v1.assign(v2.begin(), v2.end()); // 将 v2 的范围赋值给 v1 ``` 此方法同样会清除原有内容并替换为目标范围的数据[^3]。 #### 方法三:直接赋值运算符 (`=`) 这是最简单的形式之一,利用重载的赋值运算符完成深拷贝。 ```cpp #include <vector> std::vector<int> v2 = {1, 2, 3}; std::vector<int> v1; v1 = v2; // 直接赋值 ``` 这种方式内部实现了完整的复制逻辑,适合大多数场景下的需求。 #### 方法四:迭代器与循环手动赋值 尽管效率较低,但也可以借助迭代器逐一遍历源 `vector` 并将其元素逐一加入目标 `vector`。 ```cpp #include <vector> std::vector<int> v2 = {1, 2, 3}; std::vector<int> v1; for (auto it = v2.begin(); it != v2.end(); ++it) { v1.push_back(*it); } ``` 该方案虽然直观易懂,但由于涉及多次调用 `push_back()` 导致性能相对较差[^2]。 #### 方法五:追加操作(如果只是想扩展而非完全覆盖) 当希望把第二个向量附加到第一个之后而不是替代它时,则可考虑如下写法: ```cpp #include <vector> std::vector<int> v1 = {0}; std::vector<int> v2 = {1, 2, 3}; v1.insert(v1.end(), v2.begin(), v2.end()); ``` 这不会改变原始的第一个向量里的任何现有项目而是仅仅增加新的项于末端位置处。 以上就是关于如何在C++程序里执行从某个已存在的标准模板库(STL)`vector`对象传递全部或者部分成员至另一同类别的实例上的若干途径介绍.
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值