C++vector的insert函数用法小结

 更新时间:2025年03月14日 11:01:36   作者:*TQK*  
std::vector::insert是C++中用于在指定位置插入元素的函数,支持插入单个元素、多个相同元素、一个范围的元素或初始化列表中的元素,插入操作可能会使插入点之后的迭代器失效,并且时间复杂度为O(n),本文介绍C++vector的insert函数用法小结,感兴趣的朋友一起看看吧

在 C++ 中,std::vector 是一个动态数组,提供了灵活的内存管理和丰富的成员函数。insert 函数是 std::vector 提供的一个非常有用的成员函数,用于在指定位置插入元素或另一个范围的元素。

std::vector::insert 的用法

1. 插入单个元素

iterator insert(const_iterator pos, const T& value);

pos:插入位置的迭代器(指向要插入位置的前一个元素)。

value:要插入的元素。

2. 插入多个相同的元素

void insert(const_iterator pos, size_type count, const T& value);

pos:插入位置的迭代器。

count:要插入的元素数量。

value:要插入的元素。

3. 插入一个范围的元素

template <class InputIterator>
void insert(const_iterator pos, InputIterator first, InputIterator last);

pos:插入位置的迭代器。

first:范围的起始迭代器。

last:范围的结束迭代器。

4. 插入初始化列表中的元素(C++11 及以上)

void insert(const_iterator pos, initializer_list<T> ilist);

pos:插入位置的迭代器。

ilist:初始化列表。

示例代码

示例 1:插入单个元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, 99); // 在索引2的位置插入99
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

输出:

1 2 99 3 4 5

示例 2:插入多个相同的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, 3, 99); // 在索引2的位置插入3个99
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

输出:

1 2 99 99 99 3 4 5

示例 3:插入一个范围的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec1 = {1, 2, 3, 4, 5};
    vector<int> vec2 = {99, 100, 101};
    vec1.insert(vec1.begin() + 2, vec2.begin(), vec2.end()); // 在索引2的位置插入vec2的所有元素
    for (int num : vec1) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

输出:

1 2 99 100 101 3 4 5

示例 4:插入初始化列表中的元素

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.insert(vec.begin() + 2, {99, 100, 101}); // 在索引2的位置插入初始化列表中的元素
    for (int num : vec) {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}

输出:

1 2 99 100 101 3 4 5

注意事项

迭代器失效

插入操作会使插入点之后的所有迭代器失效。如果需要在插入后继续使用迭代器,建议重新获取。

例如:

auto it = vec.begin() + 2;
vec.insert(it, 99);
it = vec.begin() + 2; // 重新获取迭代器

性能

插入操作的时间复杂度为 O(n),其中 n 是插入点之后的元素数量。这是因为插入操作可能需要移动插入点之后的所有元素。

内存分配

如果插入操作导致 vector 的容量不足,vector 会自动重新分配内存,这可能会导致所有迭代器失效。

总结

std::vector::insert 是一个非常灵活的函数,可以用于在指定位置插入单个元素、多个相同的元素、一个范围的元素或初始化列表中的元素。通过合理使用 insert 函数,可以方便地操作 vector 的内容。

到此这篇关于C++vector的insert函数用法的文章就介绍到这了,更多相关C++ vector的insert函数用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言详细分析讲解关键字const与volatile的用法

    C语言详细分析讲解关键字const与volatile的用法

    在C语言中,我们经常会见到const和volatile这两个关键字,那么我们今天就来介绍下这两个关键字,提起 const 关键字,我们可能首先想到的是经过它修饰的变量便是常量了。其实我们这种想法是错误的,其实 const 修饰的变量是只读的,其本质还是变量
    2022-04-04
  • C语言三个函数的模拟实现详解

    C语言三个函数的模拟实现详解

    这篇文章主要为大家详细介绍了C语言三个函数的模拟实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C++中关于this指针的入门介绍

    C++中关于this指针的入门介绍

    this 指针在C++类和对象中是个很方便实用的关键字,可以简化对象成员属性的调用,使代码表达的含义更加准确;在之前的学习中我们都可以判断变量所占内存空间大小,那么我们创建的类对象所占的内存空间怎么计算呢?想知道this的妙用和类对象占用的内存空间就来跟我学习吧
    2022-07-07
  • C语言中结构体实例解析

    C语言中结构体实例解析

    大家好,本篇文章主要讲的是C语言中结构体实例解析,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • C语言实现将double/float 转为字符串(带自定义精度)

    C语言实现将double/float 转为字符串(带自定义精度)

    这篇文章主要介绍了C语言实现将double/float 转为字符串(带自定义精度),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 基于C语言实现简易三子棋游戏

    基于C语言实现简易三子棋游戏

    这篇文章主要为大家详细介绍了基于C语言实现简易三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2022-01-01
  • 实例解析C++设计模式编程中简单工厂模式的采用

    实例解析C++设计模式编程中简单工厂模式的采用

    这篇文章主要介绍了C++设计模式编程中简单工厂模式的采用实例,在简单工厂模式中程序往往利用封装继承来降低耦合度,需要的朋友可以参考下
    2016-03-03
  • C++智能指针weak_ptr的作用详解

    C++智能指针weak_ptr的作用详解

    weak_ptr是一个智能指针,也是一个类模板,本文主要介绍了C++智能指针weak_ptr的作用详解,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 详解如何将c语言文件打包成exe可执行程序

    详解如何将c语言文件打包成exe可执行程序

    这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • C++学习进阶篇之类大小计算和this指针

    C++学习进阶篇之类大小计算和this指针

    this是C++中的一个关键字,也是一个const指针,它指向当前对象,通过它可以访问当前对象的所有成员,下面这篇文章主要给大家介绍了关于C++学习进阶篇之类大小计算和this指针的相关资料,需要的朋友可以参考下
    2023-04-04

最新评论