- 概述
STL是一组C++标准程序库,提供了丰富的组件,包括容器、迭代器、算法、函数对象等等。其中STL容器中list是一种双向链表结构。本教程中将详细讲解如何使用C++的STL容器list。
- list容器的基本声明
list容器属于C++ STL中的一种容器,因此在使用时需要包含头文件#include<list>
。list容器的声明方式如下:
list<T> lst;
其中,T代表list容器中存储的元素类型,可以是基本数据类型、结构体、类等各种数据类型。
- list容器的基本操作
a. 插入元素
list容器支持在表头和表尾插入元素,其中函数的名称分别为push_front
和push_back
。例如:
list<int> lst;
lst.push_front(1);
lst.push_back(2);
这个例子中,首先创建了一个空的list容器lst,然后使用push_front
方法在lst的表头插入了元素1,再使用push_back
方法在lst的表尾插入了元素2。
b. 删除元素
list容器也支持删除元素操作,其中包括pop_front
和pop_back
方法,分别用于删除表头和表尾的元素。例如:
list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.pop_back();
这个例子中,首先创建了一个list容器lst,并使用push_back
方法向其中插入了两个元素,然后使用pop_back
方法删除了最后一个元素。
c. 访问元素
list容器支持通过front
和back
方法访问表头和表尾的元素。例如:
list<int> lst;
lst.push_back(1);
lst.push_back(2);
cout<<lst.front()<<endl;
cout<<lst.back()<<endl;
这个例子中,首先创建了一个list容器lst,并使用push_back
方法向其中插入了两个元素,然后使用front
和back
方法访问了最前和最后的元素。
d. 查找元素
list容器也支持查找元素,其中包括find
和count
方法,分别用于查找元素和计数。例如:
list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
if (lst.find(2) != lst.end()) {
cout<<"2 is found in list"<<endl;
}
cout<<"num of 1 in list:"<<lst.count(1)<<endl;
这个例子中,首先创建了一个list容器lst,并使用push_back
方法向其中插入了三个元素,然后使用find
方法在lst中查找元素2的位置,如果找到则输出“2 is found in list”,接着使用count
方法计算lst中元素1的数量,并输出该数量。
- list容器的高级操作
a. 反转容器
使用reverse
方法可以对list容器进行反转操作。例如:
list<int> lst;
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
lst.reverse();
这个例子中,首先创建了一个list容器lst,并使用push_back
方法向其中插入了三个元素,然后使用reverse
方法将lst中的元素进行了反转。
b. 排序容器
使用sort
方法可以对list容器进行排序操作。例如:
list<int> lst;
lst.push_back(3);
lst.push_back(2);
lst.push_back(1);
lst.sort();
这个例子中,首先创建了一个list容器lst,并使用push_back
方法向其中插入了三个元素,然后使用sort
方法将lst中的元素进行了排序操作。
- 示例代码
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> lst;
lst.push_front(1);//list头部插入1
lst.push_back(2);//list尾部插入2
lst.push_back(3);//list尾部插入3
lst.pop_front();//list头部弹出元素
lst.reverse();//list反转操作
lst.sort();//list排序操作
for (auto itr = lst.begin(); itr != lst.end(); itr++) {//遍历list容器
cout << *itr << endl;
}
return 0;
}
这个示例代码中,首先创建了一个list容器lst,通过push_front
和push_back
方法向其中插入了三个元素1、2、3,然后使用pop_front
方法将最前面的元素1从lst中弹出,使用reverse
方法对lst进行反转操作,使用sort
方法对lst进行排序,最后用begin
和end
方法遍历lst容器,并通过cout
方法输出容器中的元素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ STL入门教程(2) list双向链表使用方法(附程序代码) - Python技术站