📜  C++ STL-list.insert()函数(1)

📅  最后修改于: 2023-12-03 14:39:50.956000             🧑  作者: Mango

C++ STL - list.insert()函数
简介

C++ STL(Standard Template Library)提供了许多数据结构和算法,其中包括list容器。list是一个双向链表,可以动态地添加、删除和移动元素。其中的insert()函数用于在指定位置插入一个或多个元素。

语法

下面是list容器的insert()函数的语法:

iterator insert (iterator position, const T& val);
iterator insert (iterator position, size_type n, const T& val);
template <class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last);
  • 第一个语法形式在指定位置插入一个元素。
  • 第二个语法形式在指定位置插入n个相同的元素。
  • 第三个语法形式在指定位置插入一个范围内的元素,范围由迭代器 firstlast 定义。
参数
  • position:要插入元素的位置,表示一个迭代器。
  • val:要插入的元素。
  • n:要插入的相同元素的个数。
  • firstlast:要插入范围内元素的起始和结束迭代器。
返回值

插入元素后的迭代器。

示例

以下示例演示了如何使用list.insert()函数:

#include <iostream>
#include <list>

int main() {
    std::list<int> mylist{1, 2, 3, 4, 5};
    
    // 插入单个元素
    std::list<int>::iterator it = mylist.begin();
    ++it; // 将迭代器指向第2个元素
    
    mylist.insert(it, 10);
    // mylist: {1, 10, 2, 3, 4, 5}
    
    // 插入多个相同元素
    it = mylist.begin();
    ++it; // 将迭代器指向第2个元素
    
    mylist.insert(it, 3, 20);
    // mylist: {1, 20, 20, 20, 10, 2, 3, 4, 5}
    
    // 插入范围内元素
    std::list<int> newlist{7, 8, 9};
    
    it = mylist.begin();
    ++it; // 将迭代器指向第2个元素
    
    mylist.insert(it, newlist.begin(), newlist.end());
    // mylist: {1, 7, 8, 9, 20, 20, 20, 10, 2, 3, 4, 5}

    return 0;
}
注意事项
  • 当使用insert()函数时,要注意保证迭代器的有效性。在插入元素后,之前的迭代器可能会失效。
  • 在插入元素时,如果list的大小超过其最大限制(由底层实现决定),则会引发length_error异常。
总结

list.insert()函数提供了在指定位置插入元素的多种方式。它是使用C++ STL中list容器的关键方法之一,可以方便地扩展链表中的元素。请确保在使用insert()函数时,仔细阅读相关文档,并根据具体需求选择正确的语法形式。