一、List定义:
List是stl实现的双向链表,与向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。使用时需要添加头文件
#include <list>
二、List定义和初始化:
list<int>lst1; //创建空list
list<int> lst2(5); //创建含有5个元素的list
list<int>lst3(3,2); //创建含有3个元素的list
list<int>lst4(lst2); //使用lst2初始化lst4
list<int>lst5(),l()); //同lst4
三、List常用操作函数:
L() 给list赋值
L() 返回最后一个元素
L() 返回指向第一个元素的迭代器
L() 删除所有元素
L() 如果list是空的则返回true
L() 返回末尾的迭代器
L() 删除一个元素
L() 返回第一个元素
L() 返回list的配置器
L() 插入一个元素到list中
L() 返回list能容纳的最大元素数量
L() 合并两个list
L() 删除最后一个元素
L() 删除第一个元素
L() 在list的末尾添加一个元素
L() 在list的头部添加一个元素
L() 返回指向第一个元素的逆向迭代器
L() 从list删除元素
L_if() 按指定条件删除元素
L() 指向list末尾的逆向迭代器
L() 改变list的大小
L() 把list的元素倒转
L() 返回list中的元素个数
L() 给list排序
L() 合并两个list
L() 交换两个list
L() 删除list中重复的元素
四、List使用示例:
示例1:遍历List
//迭代器法
for(list<int>::const_iteratoriter = l();iter != l();iter++) { cout<<*iter; } cout<<endl;示例2:
#include <iostream> #include <list> #include <numeric> #include <algorithm> #include <windows.h> using namespace std; typedef list<int> LISTINT; typedef list<int> LISTchar; void main() { //用LISTINT创建一个list对象 LISTINT listOne; //声明i为迭代器 LISTINT::iterator i; li(3); li(2); li(1); li(4); li(5); li(6); cout << "li()--- li():" << endl; for (i = li(); i != li(); ++i) cout << *i << " "; cout << endl; LISTINT::reverse_iterator ir; cout << "li():" << endl; for (ir = li(); ir != li(); ir++) { cout << *ir << " "; } cout << endl; int result = accumulate(li(), li(), 0); cout << "Sum=" << result << endl; cout << "------------------" << endl; //用LISTCHAR创建一个list对象 LISTCHAR listTwo; //声明i为迭代器 LISTCHAR::iterator j; li('C'); li('B'); li('A'); li('D'); li('E'); li('F'); cout << "li():" << endl; for (j = li(); j != li(); ++j) cout << char(*j) << " "; cout << endl; j = max_element(li(), li()); cout << "The maximum element in listTwo is: " << char(*j) << endl; Sleep(10000); } #include <iostream> #include <list> #include <windows.h> using namespace std; typedef list<int> INTLIST; //从前向后显示list队列的全部元素 void put_list(INTLIST list, char *name) { INTLIST::iterator plist; cout << "The contents of " << name << " : "; for (plist = li(); plist != li(); plist++) cout << *plist << " "; cout << endl; } //测试list容器的功能 void main(void) { //list1对象初始为空 INTLIST list1; INTLIST list2(5, 1); INTLIST list3(), --li()); //声明一个名为i的双向迭代器 INTLIST::iterator i; put_list(list1, "list1"); put_list(list2, "list2"); put_list(list3, "list3"); li(7); li(8); cout << "li(7) and li(8):" << endl; put_list(list1, "list1"); li(6); li(5); cout << "li(6) and li(5):" << endl; put_list(list1, "list1"); li(++li(), 3, 9); cout << "li(li()+1,3,9):" << endl; put_list(list1, "list1"); //测试引用类函数 cout << "li()=" << li() << endl; cout << "li()=" << li() << endl; li(); li(); cout << "li() and li():" << endl; put_list(list1, "list1"); li(++li()); cout << "li(++li()):" << endl; put_list(list1, "list1"); li(8, 1); cout << "li(8,1):" << endl; put_list(list2, "list2"); cout << "li(): " << li() << endl; cout << "li(): " << li() << endl; cout << "li(): " << li() << endl; put_list(list1, "list1"); put_list(list3, "list3"); cout << "list1>list3: " << (list1 > list3) << endl; cout << "list1<list3: " << (list1 < list3) << endl; li(); put_list(list1, "list1"); li(++li(), list3); put_list(list1, "list1"); put_list(list3, "list3"); Sleep(10000); }最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!