- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3_STL_容器_序列
3_STL_容器_序列
特化,偏特化 部分特化
标准模板要注意错误的检查
想要保存字符串,可以字符数组,也可用string
char *name=new char[100];
cinname; //这样可以
delete name;
字符数组不一定是字符串,只有\0结尾的才是字符串
如何把容器里的东西存放到文件里?
不能直接存,容器里只有一个指针,必须通过指针找到相应的内容,然后通过迭代器复制到文件里
对象,容器什么的,都是通过动态内存来存数据的
1.STL--standard template library标准模板库
1)迭代器分类(it):++,*,-,==,!=
输入迭代器:可读*it的值,但不一定能修改(设置)*it的值
输出迭代器:可以设置*it的值,但不一定能读取*it的值
前向迭代器:可以读取也可以设置*it的值
双向迭代器:支持--
随机迭代器:几乎跟指针一样,支持--,+n,-n,比较大小,[下标]
2)适配器:是使一事物的行为类似于另一事物的行为的一种机制,包括容器适配器,迭代器适配器和 函数适配器。
3)函数模板(通用算法algorithm)---关于算法的 查找 排序
内容太多,通用算法依赖迭代器实现,可以从头到尾遍历整个容器的方法
for_each() find find_if count count_if sort copy
iterator find(pos_beg, pos_end, data)
iterator find_if(pos_beg, pos_end, cond), bool cond(element)
int count(...), int count_if(...)
4)类模板(容器containter)----关于数据结构 数组 链表 栈 队列 二叉树
a.标准容器:序列(顺序)式容器(vector是个能够存放任意类型的动态数组,能够增加和压缩 数据;deque适合首尾删除增加;list链表)
关联式容器(set不允许重复;multiset允许重复;map不允许重复;multimap允 许重复)
迭代器(内部类iterator,支持* - ++ == !=),用来访问容器里的内容
插入迭代器,iostream迭代器,反向,const迭代器,
五种迭代器:输入,输出,前向,双向,随机访问迭代器
数组里面,指针是最原始的迭代器
每种容器都自己负责封装迭代器类
b.容器适配器(特殊容器):栈 队列 优先队列
c.函数对象:对象能像函数一样使用,比如()运算符
d.内存分配器allocator
////////////////////////////////////////////////////////////////////////////////////
标准容器(类模板)共性:
构造函数(包括无参构造,拷贝构造,区间构造(两个迭代器表示的两个位置))
析构函数
迭代器相关函数:.begin()正向iterator,返回指向第一个元素位置的迭代器
.end()返回指向超越最后一个位置的迭代器
.rbegin()反向reverse_iterator,反向迭代器
.rend()
标准都支持 * - == ++ -- = !=
插入:.insert(pos,element) 其中pos是个表示位置的迭代器
删除:.erase(pos), .erase(pos_beg,pos_end)
清除:.clear() 清除容器里所以的数据
大小:.size() .max_size()
交换:.swap(c2) .swap(c1,c2)
运算:= = = == !=
————————————————————————————————————————
序列式共性vector deque list:
构造函数:增加了指定元素个数和初始值(初始值默认是0)
插入:.insert(pos,n,element) .insert(pos,pos_beg,pos_end)
赋值:.assign(n,element) .assign(pos_beg,pos_end) 旧的全部清理掉新的全部插入进来
调整:.resize(n,element=0)
首尾:.front(), .back() 可以修改首尾元素的值
增删:.
文档评论(0)