深圳建网站的公,泉州网红,工艺宣传网站建设,谷歌seo推广公司前言
本文主要记录、整理、回顾在算法考试中常用的一些库函数#xff0c;技巧等#xff0c;不断更新中~
list 常用方法
在一般c编程中#xff0c;对于数组这样的数据结构#xff0c;一般都使用vector居多#xff0c;貌似list用的很少。但实际list也十分强大#xff0c…前言
本文主要记录、整理、回顾在算法考试中常用的一些库函数技巧等不断更新中~
list 常用方法
在一般c编程中对于数组这样的数据结构一般都使用vector居多貌似list用的很少。但实际list也十分强大是STL 中的双向链表容器特别是适用于一些频繁插入的一些操作。 使用案例leetcode 56.合并区间
1. 初始化和构造 listint lst; 默认构造函数创建一个空链表。 listint lst(n, value); 使用给定值 value 初始化链表链表包含 n 个元素。 listint lst(first, last); 通过两个迭代器区间 [first, last) 初始化链表。 listint lst(lst2); 使用另一个 list 拷贝构造一个新的链表。
2. 基本操作 lst.size(); 返回链表中元素的个数。 lst.empty(); 检查链表是否为空如果为空返回 true否则返回 false。 lst.clear(); 清空链表删除所有元素。 lst.front(); 返回链表的第一个元素。 lst.back(); 返回链表的最后一个元素。
3. 元素访问与修改 lst.push_front(value); 在链表的前面插入元素 value。 lst.push_back(value); 在链表的末尾插入元素 value。 lst.pop_front(); 删除链表的第一个元素。 lst.pop_back(); 删除链表的最后一个元素。 lst.insert(it, value); 在迭代器 it 所指向位置之前插入元素 value。 lst.erase(it); 删除迭代器 it 所指向的元素。 lst.erase(first, last); 删除从 first 到 last 范围的元素。
4. 查找与修改 lst.find(value); 查找链表中第一次出现的元素 value返回指向该元素的迭代器如果没有找到返回 lst.end()。 lst.remove(value); 删除链表中所有值为 value 的元素。 lst.remove_if(pred); 删除满足谓词 pred 的所有元素。 lst.reverse(); 反转链表中的元素顺序。 lst.sort(); 对链表中的元素进行排序。 lst.unique(); 删除链表中相邻的重复元素。
5. 拼接与操作 lst.splice(it, lst2); 将 lst2 中的所有元素插入到 lst 中插入位置在迭代器 it 指向的位置之前。lst2 会变为空。 lst.splice(it, lst2, it2); 将 lst2 中 it2 指向的元素插入到 lst 中插入位置是迭代器 it 指向的位置之前。 lst.splice(it, lst2, first, last); 将 lst2 中的从 first 到 last 范围的元素插入到 lst 中插入位置是迭代器 it 指向的位置之前。
6. 迭代器操作 lst.begin(); 返回指向链表第一个元素的迭代器。 lst.end(); 返回指向链表末尾一个越界位置的迭代器。 lst.rbegin(); 返回指向链表最后一个元素的反向迭代器。 lst.rend(); 返回指向链表头部之前的一个反向迭代器。 advance(it, n); 让迭代器 it 向前移动 n 步。 it lst.insert(it, value); 在迭代器 it 指向的位置插入元素 value返回插入元素的新位置。
7. 其他辅助方法 lst.resize(n); 调整链表的大小如果 n 小于当前大小链表会被截断如果大于当前大小会插入默认值。 lst.resize(n, value); 调整链表的大小并使用 value 填充新增的元素。
持续补充更新中~