📅  最后修改于: 2023-12-03 14:59:45.704000             🧑  作者: Mango
C++ STL(Standard Template Library)中的list
是一个常用的容器,它以双向链表的形式存储元素。list
提供了一系列成员函数和算法,使得元素的插入、删除和移动变得高效。
list
支持双向迭代器,可以在容器中顺序或逆序地遍历元素。list
的大小可以根据需要动态增长,不需要预先指定容器大小。list
中插入或删除元素的成本与容器大小无关,时间复杂度为常数。list
存储元素的方式决定了无需进行元素的拷贝构造和析构,只需修改指针。使用list
之前,需要包含头文件<list>
。
#include <list>
std::list<数据类型> listName; // 声明一个空的list
std::list<int> myList; // 声明一个存储整数的list
push_back(value)
myList.push_back(10); // 在末尾添加元素10
myList.push_back(20); // 在末尾添加元素20
push_front(value)
myList.push_front(5); // 在开头添加元素5
list
不支持随机访问,可以使用迭代器遍历容器。
std::list<int>::iterator it; // 定义一个迭代器
for (it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " "; // 输出元素值
}
insert(position, value)
std::list<int>::iterator it = myList.begin();
++it; // 指向第二个元素的迭代器
myList.insert(it, 15); // 在第二个位置插入元素15
remove(value)
myList.remove(10); // 删除所有值为10的元素
size()
std::cout << "List size: " << myList.size() << std::endl; // 输出list的大小
clear()
myList.clear(); // 清空list中的所有元素
#include <iostream>
#include <list>
int main() {
std::list<int> myList;
myList.push_back(10);
myList.push_back(20);
myList.push_front(5);
std::cout << "List elements: ";
std::list<int>::iterator it;
for (it = myList.begin(); it != myList.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
myList.insert(++myList.begin(), 15);
myList.remove(10);
std::cout << "List size: " << myList.size() << std::endl;
myList.clear();
return 0;
}
以上示例演示了list
的基本用法,包括添加元素、访问元素、插入和删除元素、获取大小以及清空容器。
list
是C++ STL中一个有用的双向链表容器,适用于需要频繁插入和删除元素的场景。通过熟悉list
的使用方法,程序员可以更高效地处理大量数据的操作。