📅  最后修改于: 2023-12-03 15:23:22.399000             🧑  作者: Mango
在 C++ STL 中,insert()
是一个非常常用的成员函数,用于将一个或多个元素插入到容器中。这个函数可用于 vector、list、set、map、multi_set 和 multi_map 等容器。
函数的不同版本在不同的容器中略有不同,但它们都使用相同的基本语法。本文将以 vector 为例进行介绍。
在 vector 中,insert()
函数的语法为:
iterator insert (const_iterator position, const T& val);
其中,position
是插入位置,val
是要插入的元素。
有些版本的insert()
函数还可以在指定位置插入多个元素,如下:
template <class InputIterator>
void insert (const_iterator position, InputIterator first, InputIterator last);
其中,first
和 last
定义了一个范围,即插入[first, last)之间的所有元素。
下面是一个示例,介绍如何使用 insert()
函数在向量中插入一个元素:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vec{ 1, 2, 3 };
auto iter = vec.begin() + 1;
vec.insert(iter, 4);
for (auto i : vec)
std::cout << i << ' ';
std::cout << '\n';
return 0;
}
输出:
1 4 2 3
在这个示例中,我们创建了一个包含三个整数的向量,并向其第二个位置插入了一个值为 4 的元素。
下面的示例介绍如何使用insert()
函数在向量中插入多个元素:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vec{ 1, 2, 3 };
auto iter = vec.begin() + 2;
std::vector<int> new_vec{ 4, 5, 6 };
vec.insert(iter, new_vec.begin(), new_vec.end());
for (auto i : vec)
std::cout << i << ' ';
std::cout << '\n';
return 0;
}
输出:
1 2 4 5 6 3
在这个示例中,我们创建了一个包含三个整数的向量,并在其第三个位置插入了另一个包含三个整数的向量。
insert()
函数还可以用于向容器中插入任意类型的元素,而不仅仅是整数。例如,可以将一个包含字符串的向量插入到另一个字符串的向量中,如下所示:
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> vec1{ "one", "two", "four" };
auto iter = vec1.begin() + 2;
std::vector<std::string> vec2{ "three" };
vec1.insert(iter, vec2.begin(), vec2.end());
for (auto s : vec1)
std::cout << s << ' ';
std::cout << '\n';
return 0;
}
输出:
one two three four
在这个示例中,我们创建了一个包含四个字符串的向量,并在其第三个位置插入了另一个包含一个字符串的向量。
insert()
函数是 C++ STL 中非常重要的一个函数,它可以在容器中插入一个或多个元素,适用于 vector、list、set、map、multi_set 和 multi_map 等各种容器。使用 insert()
函数可以使代码更加简洁和清晰。