当前位置: 代码网 > it编程>编程语言>C/C++ > C++vector的insert函数用法小结

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

2025年03月14日 C/C++ 我要评论
在 c++ 中,std::vector 是一个动态数组,提供了灵活的内存管理和丰富的成员函数。insert 函数是 std::vector 提供的一个非常有用的成员函数,用于在指定位置插入元素或另一个

在 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函数用法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com