广州网站建设有哪些,河北网站开发报价,快速建立平台网站开发网站模板设计,网站建设与分工的论文C标准模板库#xff08;STL#xff09;中的list是一个双向链表#xff0c;它提供了高效的插入、删除和反转操作。list支持随机访问#xff0c;这意味着我们可以直接访问任何元素#xff0c;而不需要从头开始遍历链表。此外#xff0c;list还支持反向迭代#xff0c;即可…C标准模板库STL中的list是一个双向链表它提供了高效的插入、删除和反转操作。list支持随机访问这意味着我们可以直接访问任何元素而不需要从头开始遍历链表。此外list还支持反向迭代即可以从尾部开始迭代。
list基本操作
push_back()在尾部添加一个元素。
myList.push_back(1); // myList: 1
myList.push_back(2); // myList: 1, 2
myList.push_back(3); // myList: 1, 2, 3push_front()在头部添加一个元素。
myList.push_front(0); // myList: 0, 1, 2, 3pop_back()删除最后一个元素。
myList.
pop_back(); // myList: 0, 1, 2pop_front()删除第一个元素。
myList.pop_front(); // myList: 1, 2insert(pos, n, elem)在pos位置插入n个elem数据。例如在位置1插入2个值为3的元素。
myList.insert(myList.begin() 1, 2, 3); // myList: 0, 3, 3, 1, 2erase(pos)删除pos位置的数据返回下一个数据的位置。例如删除位置1的数据并返回下一个位置。
listint::iterator it myList.erase(myList.begin() 1); // myList: 0, 1, 2remove(elem)删除容器中所有与elem值匹配的元素。例如删除所有值为1的元素。
myList.remove(1); // myList: 0, 2size()返回容器中元素的个数。例如返回myList中元素的个数。
int size myList.size(); // size: 2list特性
list是一个双向链表其特性包括 可以在常数时间内进行任意位置的插入和删除操作。可以前后双向迭代。底层是双向链表结构每个元素存储在互不相关的独立节点中节点中通过指针指向其前一个元素和后一个元素。 相比vectorlist在任意位置插入、移除元素的执行效率通常更好。然而list不支持任意位置的随机访问要访问list的特定位置元素需要从已知的位置如头部或尾部开始迭代到该位置这个过程需要线性时间开销。此外list还需要一些额外的空间来保存每个节点的相关信息。
应用举例
#include iostream
#include listint main() {std::listint myList;// 添加元素到链表myList.push_back(1);myList.push_back(2);myList.push_back(3);// 使用迭代器遍历链表for (std::listint::iterator it myList.begin(); it ! myList.end(); it) {std::cout *it ;}std::cout std::endl;// 从链表中删除元素myList.pop_front();myList.pop_back();// 使用反向迭代器遍历链表for (std::listint::reverse_iterator it myList.rbegin(); it ! myList.rend(); it) {std::cout *it ;}std::cout std::endl;return 0;
}输出
1 2 3
2 3