C++ list的实例详解
什么是C++ list?
在C++ STL中,list是一种双向链表容器,可以用于存储各种数据类型的元素。list在插入和删除操作上效率比较高,但是随机访问效率较低。
如何使用C++ list
-
引入list头文件
```c++
include
```
-
声明list
c++
list<int> mylist; -
在list中增加元素
c++
mylist.push_front(1); // 在list头部插入元素1(时间复杂度为 O(1))
mylist.push_back(2); // 在list尾部插入元素2(时间复杂度为 O(1))
mylist.insert(mylist.begin(), 3); // 在list头部之后插入元素3(时间复杂度为 O(1)) -
在list中删除元素
c++
mylist.pop_front(); // 删除list头部的元素(时间复杂度为 O(1))
mylist.pop_back(); // 删除list尾部的元素(时间复杂度为 O(1))
mylist.erase(mylist.begin()); // 删除list头部之后的元素(时间复杂度为 O(1)) -
遍历list
c++
list<int>::iterator it;
for (it=mylist.begin(); it!=mylist.end(); ++it) {
cout << *it << " ";
}
// 输出结果为1 2 3
示例说明
示例一
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> mylist;
mylist.push_back(10);
mylist.push_back(20);
mylist.push_back(30);
list<int>::iterator it;
for(it=mylist.begin(); it!=mylist.end(); ++it) {
cout << *it << " ";
}
cout << endl;
it = mylist.begin();
++it;
mylist.insert(it, 15);
for(it=mylist.begin(); it!=mylist.end(); ++it) {
cout << *it << " ";
}
cout << endl;
it = mylist.begin();
++it;
mylist.erase(it);
for(it=mylist.begin(); it!=mylist.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
输出结果为:
10 20 30
10 15 20 30
10 20 30
该示例演示了C++ list的基本应用,包括list的声明、增加元素、遍历list和删除元素等操作。
示例二
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> mylist;
for(int i=1; i<=10; ++i) {
mylist.push_back(i*10);
}
// 删除list中大于50的元素(使用自定义的函数对象)
mylist.remove_if([](int x){
return x>50;
});
// 输出删除后的list
list<int>::iterator it;
for(it=mylist.begin(); it!=mylist.end(); ++it) {
cout << *it << " ";
}
cout << endl;
return 0;
}
输出结果为:
10 20 30 40 50
该示例演示了如何使用C++ list自带的算法函数remove_if,通过自定义函数对象,删除list中符合条件的元素。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ list的实例详解 - Python技术站