c++中list容器

416 阅读1分钟

c++中list容器

C++中的STL(标准模板库)提供了许多容器,其中list是其中之一。本文将介绍list容器,并提供示例程序,以便更好地理解其应用。

List是一种双向链表容器,每个节点含有前一个和后一个节点的指针,数据存储在节点内部。该容器可以动态地增加或删除元素,具有高效的插入和删除操作,但访问列表中的数据时速度较慢。

示例程序:

#include <iostream>
#include <list>

int main() {
    std::list<int> myList = {5, 2, 7, 9, 1};

    // 迭代遍历
    for (auto it = myList.begin(); it != myList.end(); ++it) {
        std::cout << *it << ' ';
    }
    std::cout << std::endl;

    // 插入
    myList.push_back(0);
    myList.push_front(6);

    // 输出
    for (auto n : myList) {
        std::cout << n << ' ';
    }
    std::cout << std::endl;

    // 删除
    myList.pop_back();
    myList.pop_front();

    // 输出
    for (auto n : myList) {
        std::cout << n << ' ';
    }
    std::cout << std::endl;

    return 0;
}

上述代码中,我们首先创建一个包含5个整数的列表。请注意,我们可以在创建时将数据放入列表中。

接下来,我们使用迭代器访问列表中的元素。请注意,我们需要使用自增运算符来遍历整个列表。

然后,我们在列表的末尾和开头插入新的元素。使用push_back()函数在列表末尾插入元素,使用push_front()函数在列表开头插入元素。

最后,我们使用pop_back()函数和pop_front()函数从列表的末尾和开头删除元素。这些函数无需任何参数即可删除元素。

除了上述操作外,这里还有一些其他list容器的操作:

  • clear()删除所有元素
  • erase()删除元素
  • size()返回元素数量
  • merge()将两个列表合并成一个
  • remove()删除某个值的元素

下面给出一段关于如何使用这些操作的示例程序:

#include <iostream>
#include <list>
#include <algorithm>

int main() {
    std::list<int> list1 = {3, 7, 1, 8};
    std::list<int> list2 = {9, 2, 5};
    list1.sort();    // 排序
    list2.reverse(); // 翻转
    list1.merge(list2); // 合并
    list1.remove(8); // 删除值为8的元素

    std::cout << "Size: " << list1.size() << std::endl;

    for (auto n : list1) {
        std::cout << n << ' ';
    }
    std::cout << std::endl;

    return 0;
}

在上述示例中,我们创建了两个列表并对它们进行排序和翻转操作。接下来,我们将这两个列表合并为一个。请注意,两个列表必须是有序的(在我们的示例中,我们手动对list1进行了排序)。最后,我们删除值为8的元素,并输出当前列表中的元素数量和元素值。

总结:

list是一种基于链表的高效容器,它允许动态地增加或删除元素,并且具有高效的插入和删除操作。在引入STL(标准模板库)时,包含list就是为了方便开发人员使用它。此外,list还支持许多其他的操作,如排序、合并、删除等等。