📜  在C++ STL中列出insert()(1)

📅  最后修改于: 2023-12-03 15:23:22.399000             🧑  作者: Mango

C++ STL中的insert()

概述

在 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);

其中,firstlast 定义了一个范围,即插入[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() 函数可以使代码更加简洁和清晰。