📜  如何在 C++ STL List 中插入元素?(1)

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

如何在 C++ STL List 中插入元素?

在C++中,STL List是一种双向链表的容器,支持快速插入和删除操作,和随机访问比起来较为低效。因此,在需要频繁插入和删除数据的场景下,STL List容器是一个不错的选择。

接下来,我们就来介绍如何在STL List中插入元素。

插入单个元素

STL List容器提供了多种插入单个元素的方法,如push_front、push_back和insert等。

  • push_front:在链表头部插入元素
std::list<int> myList;
myList.push_front(1); // 在头部插入元素1
  • push_back:在链表尾部插入元素
std::list<int> myList;
myList.push_back(1); // 在尾部插入元素1
  • insert:在指定位置插入元素
std::list<int> myList;
myList.insert(myList.begin(), 1); // 在头部插入元素1
myList.insert(myList.end(), 1); // 在尾部插入元素1
myList.insert(myList.begin()+1, 2); // 在第2个位置后面插入元素2
插入多个元素

STL List容器提供了多种插入多个元素的方法,如assign和insert等。

  • assign:从另一个容器中复制数据
std::list<int> myList;
std::vector<int> myVector = {1, 2, 3, 4, 5};
myList.assign(myVector.begin(), myVector.end()); // 将Vector中的元素复制到List中
  • insert:在指定位置插入一组元素
std::list<int> myList;
std::vector<int> myVector = {1, 2, 3, 4, 5};
myList.insert(myList.begin(), myVector.begin(), myVector.end()); // 在头部插入一组元素
插入自定义数据结构

当需要在STL List中存储自定义数据结构时,我们需要定义一个重载了小于运算符的数据结构和一个仿函数。

例如,我们需要在List中存储Person结构体:

struct Person {
    int age;
    std::string name;

     // 重载小于运算符,必须加上const关键字
    bool operator<(const Person &p) const {
        return age < p.age;
    }
};

// 定义仿函数
struct PersonCompare {
    bool operator()(const Person &p1, const Person &p2) const {
        return p1.age < p2.age;
    }
};

然后我们就可以通过调用STL List的插入方法插入Person对象了。

std::list<Person> myList;
Person p1 = {25, "Alice"};
Person p2 = {30, "Bob"};

myList.insert(myList.end(), p1);  // 在List尾部插入Person p1
myList.insert(myList.end(), p2);  // 在List尾部插入Person p2

以上就是在C++ STL List中插入元素的介绍。希望能对大家有所帮助!