C++ list基本使用总结
2018-04-09 10:16
337 查看
目录:
- 初始化
- 插入数据
- 遍历数据
- 删除数据
- 排序数据
- 合并数据
- 交换数据
- 获取首/尾数据
初始化
插入数据
遍历数据
删除数据
排序数据
合并数据
交换数据
获取首/尾数据
- 初始化
- 插入数据
- 遍历数据
- 删除数据
- 排序数据
- 合并数据
- 交换数据
- 获取首/尾数据
初始化
// list 初始化 void InitList() { list<int> lst; //初始化一个空的 list<int> lst1(10); // 初始化一个包括10个元素的,且10个元素值都是0 list<int> lst2(10, 55); // 初始化一个包括10个原始,且10个元素值都是55 list<int> lst3(lst1); // 使用一个list来初始化,创建了一个副本 list<int> lst4(++lst2.begin(),--lst2.end()); // 使用一个list的部分元素来初始化 }
插入数据
// list 插入数据 template <class T> list<T> InsertList(list<T> lst, T t) { lst.push_back(t); // 插入到列表末端 t = 10; lst.push_front(t); // 插入到列表的最前端 lst.assign(10, t); // 放入10个相同的元素(会清除掉之前存入的所有数据) T arr[10] = {1,2,3,4,5,6,7,8,9,0}; lst.assign(arr, arr + 10); // 将数组数据放入list(会清除掉之前存入的数据) list<T> lst1(10, 15); lst.insert(lst.begin(), lst1.begin(), lst1.end()); // 在指定位置,插入另一个list的部分元素 lst.insert(lst.end(), 5, 20); // 在指定位置,插入5个元素,值均为20 lst.insert(--lst.end(), 25); // 在指定位置,直接插入值为25的元素 return lst; }
遍历数据
// list 遍历数据 void IteratorList(list<int> lst) { if (lst.empty()) // 判断列表是否为空 return; list<int>::iterator iter = lst.begin(); // 前向迭代器 for (; iter != lst.end(); iter++) { cout << "iter value: " << *iter << endl; } list<int>::reverse_iterator revIter = lst.rbegin(); // 方向迭代器 for (; revIter != lst.rend(); revIter++) { cout << "revIter value: " << *revIter << endl; } list<int>::const_iterator constIter = lst.cbegin(); for (; constIter != lst.cend(); constIter++) { cout << "constIter value: " << *constIter << endl; } }
删除数据
// list 删除数据 void DeleteList(list<int>& lst) { if (lst.empty()) return; lst.pop_back(); // 删除末尾的元素 lst.pop_front(); // 删除第一个元素 lst.erase(lst.begin(), ++lst.begin()); // 删除指定范围的元素(使用迭代器来确定需要被删除的元素),区间[ ) lst.erase(--lst.end()); // 删除指定迭代器指向的元素 lst.remove(20); // 删除指定值的元素,若多个元素值相同,则多个元素均会被删除(通过数值的方式来确定被删除元素,且删除所有与 val 值相等的元素) lst.unique(); // 删除list中重复的数据,即去重,会保留一个元素 lst.clear(); // 清除掉所有数据 }
排序数据
int arr[10] = {3,2,1,4,6,5,9,7,8,0}; lst.assign(arr, arr + 10); // 将数组数据放入list(会清除掉之前存入的数据) lst.sort(); // 按从小到大排序 list<int>::iterator iter = lst.begin(); for (; iter != lst.end(); iter++) { cout << "iter value: " << *iter << endl; // 分别输出:0 1 2 3 4 5 6 7 8 9 } lst.reverse(); // 按从大到小排序,即倒序 iter = lst.begin(); for (; iter != lst.end(); iter++) { cout << "iter value: " << *iter << endl; // 分别输出:9 8 7 6 5 4 3 2 1 0 }
合并数据
list<int> lst1(10, 33); // 10个元素,值均为33 list<int> lst2(10, 44); // 10个元素,值均为44 list<int> lst3(10, 55); // 10个元素,值均为55 // 合并方式一 lst1.merge(lst2); // 合并元素后,lst2被清空,在lst1的末端添加lst2的元素。即将lst2中元素移到lst1中 // 合并方式二 lst1.splice(lst1.begin(), lst3, lst3.begin(), --lst3.end()); // 在指定位置,将lst3中的指定范围元素移到lst1中,lst3中对应元素被清除,区间范围:[ } lst1.splice(lst1.end(), lst3, lst3.begin()); // 在指定位置,将lst3中指定元素移到lst1中,同时从lst3中清除该元素 lst1.splice(lst1.end(), lst3); // 在指定位置,将lst3中所有元素移至lst1中,并清空lst3
交换数据
list<int> lst1(10, 33); // 10个元素,值均为33 list<int> lst2(10, 44); // 10个元素,值均为44 lst1.swap(lst2); // 二个list相互交互所有元素
获取首/尾数据
list<int> lst; int arr[10] = {3,2,1,4,6,5,9,7,8,0}; lst.assign(arr, arr + 10); // 获取最后一个和第一个元素的值 cout << "back value:" << lst.back() << "front value:" << lst.front() << endl; // 输出 back value:0 front value:3 cout << ++lst.back() << "\t" << ++lst.front() << endl; // 输出 1 4,同时list中对应元素也变成了1和4
相关文章推荐
- C++ list的基本操作和使用
- C++ 标准库 vector list map 基本使用方法 示例程序
- c++ stl list使用总结
- C++技术问题总结map、vector、list、deque各自的使用场合
- C++ list的基本操作和使用
- C++ list control基本使用
- C++中list的使用方法及常用list操作总结
- C++list的使用总结及常用list操作
- C++ 标准库 vector list map 基本使用方法 示例程序
- C++模板库 list 的使用方法总结
- C++ list的基本操作和使用
- C++ list的基本操作和使用
- C++ STL基本容器的使用(vector、list、deque、map、stack、queue)
- C++技术问题总结-第7篇 map、vector、list、deque各自的使用场合
- c++ list 链表 基本操作和使用
- DevExpress Asp.net(7) ASPxTreeList的基本使用之一
- C++ virtual使用总结
- c++总结(1)-变量作用域及extern使用以及头文件预编
- C#泛型列表List基本用法总结
- list map set及所有子类 区别与使用总结