1 //双向链表list的使用 2 //高效插入删除,若只是尾部插入删除元素,优先考虑vector 3 //若仅于头尾两端增删元素,优先考虑deque 4 #include "stdafx.h" 5 #include<iostream> 6 #include<list> //使用list之前,必须包含头文件 7 using std::list; //使用List之前,需要声明list命名空间 8 //list<int> c0;空链表 9 //list<int> c1(3);建立一个含三个默认值是0的元素的链表 10 //list<int> c2(5,2);建立一个含五个元素的链表,默认值为2 11 //list<int> c4(c2);建立一个c2的copy链表 12 //list<int> c5(c1.begin(),c1.end());c5含c1一个区域的元素[First,last] 13 int _tmain(int argc, _TCHAR* argv[]) 14 { 15 list<int> listObj{ 1, 2, 3, 4, 5 }; 16 list<int>::iterator it; 17 //遍历链表 18 for (it = listObj.begin(); it != listObj.end(); it++){ 19 std::cout << *it << "\t"; 20 } 21 std::cout << std::endl; 22 //链表插入 23 std::cout << "insert before:"; 24 for (it = listObj.begin(); it != listObj.end(); it++){ 25 std::cout << *it << " "; 26 } 27 std::cout << std::endl; 28 //传入位置和插入值为参数 29 listObj.insert(listObj.begin(), 0); 30 std::cout << "insert(pos,m) after:"; 31 for (it = listObj.begin(); it != listObj.end(); it++){ 32 std::cout << *it << " "; 33 } 34 std::cout << std::endl; 35 //第一个参数为插入位置,第二个为插入的的个数,第三个为插入的值 36 listObj.insert(listObj.begin(), 2, 88); 37 std::cout << "insert(pos,n,m) after:"; 38 for (it = listObj.begin(); it != listObj.end(); it++){ 39 std::cout << *it << " "; 40 } 41 std::cout << std::endl; 42 //第一个参数为插入起始位置,第二个为要插入的指针,第三个为结束位置 43 int arr[5] = { 11, 22, 33, 44, 55 }; 44 listObj.insert(listObj.begin(), arr, arr + 3); 45 std::cout << "insert(pos,beg,end) after:"; 46 for (it = listObj.begin(); it != listObj.end(); it++){ 47 std::cout << *it << " "; 48 } 49 std::cout <<std::endl; 50 //链表的删除 51 std::cout << " erase before:"; 52 for (it = listObj.begin(); it != listObj.end(); it++){ 53 std::cout << *it << " "; 54 } 55 std::cout <<std::endl; 56 //传入一个位置参数 57 listObj.erase(listObj.begin()); 58 std::cout << "erase after:"; 59 for (it = listObj.begin(); it != listObj.end(); it++){ 60 std::cout << *it << " "; 61 } 62 std::cout << std::endl; 63 system("pause"); 64 return 0; 65 }
时间: 2024-10-18 09:15:22