创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ
c语言内容💖:
专栏:c语言之路重点知识整合
【c语言】全部知识点总结
目录
- 按照定义分类:
- 按照功能分类:
- 各容器与迭代器:
- 迭代器失效
STL(Standard Template Library, 标准模板库),STL 库中几乎所有的代码都使用了模板类或模板函数,建立了数据结构和算法的一套标准,实现了代码的 复用性。
STL 六大组件:
- 容器(Container):存储数据
- 算法(Algorithm):操作数据
- 迭代器(Iterator):借助迭代器操作容器数据
- 仿函数(Function object):为算法提供更多策略
- 适配器(Adaptor):为算法提供更多参数的接口
- 空间配置器(allocator):动态分配、管理空间
迭代器用于访问容器,它的具体实现在中,本质为类中类的对象,可以理解为模仿指针的行为
按照定义分类:
正向迭代器 iterator | 容器.begin() 容器.end() | 正向遍历容器内元素 |
---|---|---|
常正向迭代器 const_iterator | 容器.cbegin() 容器.cend() | 正向遍历容器内的常量元素 |
反向迭代器 reverse_iterator | 容器.rbegin() 容器.rend() | 反向遍历容器内元素 |
常反向迭代器 const_reverse_iterator | 容器.crbegin() 容器.crend() | 反向遍历容器内的常量元素 |
使用举例:
#include <iostream>
#include <vector>
using namespace std;
int main()
{vector<int> vec = {1, 2, 3, 4, 5, 6, 7};//正向迭代器vector<int>::iterator it = vec.begin();while (it != vec.end()){cout << *it;it++;}cout << endl;//常正向迭代器vector<int>::const_iterator cit = vec.begin();while (cit != vec.end()){cout << *cit;cit++;}cout << endl;//反向迭代器vector<int>::reverse_iterator rit = vec.rbegin();while(rit!=vec.rend()){cout << *rit;rit++;}cout << endl;//常反向迭代器vector<int>::const_reverse_iterator crit = vec.crbegin();while (crit != vec.crend()){cout << *crit;crit++;}cout << endl;return 0;
}
按照功能分类:
输入迭代器 Input iterator | 向前读 Reads forward | istream |
---|---|---|
输出迭代器 Output iterator | 向前写 Writes forward | ostream,inserter |
前向迭代器 Forward iterator | 向前读写 Read and Writes forward | |
双向迭代器 Bidirectional iterator | 向前向后读写 Read and Writes forward and backward | list,set,multiset,map,mul timap |
随机迭代器 Random access iterator | 随机读写 Read and Write with random access | vector,deque,array,string |
各容器与迭代器:
容器 | 迭代器 |
---|---|
vector | 随机迭代器 |
deque | 随机迭代器 |
list | 双向迭代器 |
stack、queue、priority_queue | 不支持迭代器 |
set、multiset | 双向迭代器 |
map、multimap | 双向迭代器 |
迭代器失效
- 对vector 进行空间重新配置的操作,指向原vector的所有迭代器就失效了,此时 ite++没有意义
- 对于序列性容器,使用 earse 函数后,删除元素后面的迭代器失效
- 对于关联性容器,使用 earse 函数后,当前元素的迭代器失效
解决办法:调用 earse 函数返回下一个有效的迭代器,ite = vec.earse(ite);
大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 |
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●) |