向vector容器中插入对象:insert()成员函数

本文通过一个示例展示了如何使用C++ STL中的vector容器的insert()成员函数来在指定位置插入一个或多个元素。示例代码演示了在vector的不同位置插入单一元素和从数组中插入一系列元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vector容器的成员函数insert()把一个或多个对象插入到iterator指示的位置。所查找的元素将出现在iterator指出的位置之前。

#include "stdafx.h"

#include <iostream>

#include <vector>

#include <algorithm>

#include <string>

#include <list>

using namespace std;

 

voidPrintInt(const int&nData)

{

    cout<<nData<<endl;

}

int_tmain(int argc, _TCHAR* argv[])

{

    vector<int> vecInt;

    for(int i=0; i<10;++i)

    {

       vecInt.push_back(i);

    }

    vecInt.insert(vecInt.begin(),-1);

    vecInt.insert(vecInt.end(),10);

    int nArray[3] = {11,12,13};

    //插入指定范围的对象

    vecInt.insert(vecInt.end(),&nArray[0],&nArray[3]);

 

    cout<<"插入元素后向量中的内容为:"<<endl;

    for_each(vecInt.begin(),vecInt.end(),PrintInt);

 

    return 0;

}

执行结果:

### C++ Vector 容器插入另一个容器的方法 在 C++ 中,`std::vector` 提供了一个非常方便的 `insert()` 成员函数用于将其他容器的内容插入到目标容器中。以下是关于如何使用该方法的具体说明以及示例代码。 #### 方法描述 `std::vector` 的 `insert()` 函数可以接收多种参数形式,其中一种支持从另一个容器复制一段范围的数据并将其插入到当前容器中的某个位置。其语法如下: ```cpp iterator insert(const_iterator position, InputIterator first, InputIterator last); ``` - **position**: 表示要插入的位置(迭代器指向的目标位置之前)。 - **first 和 last**: 这是对另一容器定义的一个范围,表示从中提取数据的部分[^1]。 此操作会将 `[first, last)` 范围内的所有元素依次插入到由 `position` 所指代的位置前。 #### 示例代码 下面是一个完整的例子展示如何利用 `insert()` 将一个 `vector<int>` 的内容插入到另一个 `vector<int>` 当中: ```cpp #include <iostream> #include <vector> using namespace std; int main(){ // 初始化第一个 vector vector<int> source = {1, 2, 3}; // 创建第二个空 vector 并预留一些空间以便后续插入效率更高 vector<int> destination; destination.reserve(5); // 向destination填充部分初始值 for(int i=0;i<2;++i){ destination.push_back(-i-1); //-1,-2 } // 输出原始状态下的destination cout << "Before insertion: "; for(auto elem : destination) { cout << elem << ' '; } cout << endl; // 使用 insert() 把source的所有元素插至destination末尾 destination.insert(destination.end(), source.begin(), source.end()); // 展示最终结果 cout << "After inserting at end: "; for(auto elem : destination) { cout << elem << ' '; } cout << endl; return 0; } ``` 上述程序先创建了两个整型向量 `source` 和 `destination` ,然后通过调用 `destination.insert(...)` 实现把整个 `source` 添加到了 `destination` 的最后面[^2]。 #### 关于性能考虑 当频繁地往中间或头部追加大量新项时可能会引发多次重新分配内存的动作从而降低整体运行速度。因此,在实际开发过程中应尽可能提前预估好所需容量并通过 `reserve()` 预留足够的存储空间以减少不必要的拷贝开销[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值