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