C++容器和算法

容器部分:
顺序容器:vector deque list -- 通过元素在容器中的位置顺序存储和访问元素
vector:支持快速随机访问---容器适配器为stack后进先出栈
deque:双端队列---容器适配器为priority_queue有优先级管理的队列
list:支持快速插入/删除---容器适配器为queue先进先出队列
关联容器:map set -- 关联容器通过键(key)存储和读取元素
pair类型--#include<utility>--pair<T1,T2> p1;
map:以键-值(key-value)对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据--关联数组,元素通过键来存储和读取
map<K,V>::value_type:一个pair类型,它的first元素具有const map<K,V>::key_type类型,而second元素则为map<K,V>::mapped_type类型--map迭代器进行解引用将产生pair类型的对象
set:仅包含一个键,并有效地支持关于某个键是否存在的查询--大小可变的集合,支持通过键实现的快速读取
泛型算法:
实现了共同的操作,所以称之为“算法”;而“泛型”指的是它们可以操作在多种容器类型上;泛型算法本身从不执行容器操作,只是单独依赖迭代器和迭代器操作实现。
1.#include<algorithm> / 2.#include<numeric>
1.find()查找操作,三个形参,一对迭代器,一个要查找的值--返回第一次查找到该值的迭代器
2.accumulate()累加操作,三个形参,一对迭代器,一个累加的初值并给出返回的类型--返回累加的值
1.fill()赋值操作,三个形参,一对迭代器,一个所要赋值的值
1.fill_n()赋值操作,一个迭代器,一个计数器,一个值
1.back_inserter()插入迭代器,可以给基础容器添加元素的迭代器#include<iterator>
1.copy()复制操作,三个参数,一对迭代器,一个存储复制元素的容器
1.replace()替换操作,四个参数,一对迭代器,两个值
1.replace_copy()不改变原序列的替换操作,五个参数,一对迭代器,一个容器,两个值
1.sort()字典排序操作,两个形参,一对迭代器
1.unique()删除相邻的重复元素,并返回一个迭代器,表示无重复的值范围的结束
1.erase()删除操作,两个形参,一对迭代器
谓词(predicate):做某些检测的还书,返回用于条件判断的类型,指出条件是否成立。
1.stable_sort()按长度大小排序,而长度相同的单词仍保持字典顺序,三个参数,一对迭代器,一个谓词--比较长度大小的
1.count_if()统计符合谓词的操作,三个形参,一对迭代器,一个谓词
迭代器:#include<iterator>
(1)插入迭代器(insert iterator)--与容器绑定在一起,实现在容器中插入元素的功能
   back_inserter:创建使用push_back实现插入的迭代器
   front_inserter:创建使用push_front实现插入的迭代器
   inserter:随意插入,需要指定插入位置,总是在它的迭代器实参所标明的位置前面插入新元素
(2)isotream迭代器(iostream iterator)--与输入或输出流绑定在一起,用于迭代遍历所关联的IO流
   istream_iterator<T> in(strm)      创建从输入流strm中读取T类型对象的istream_iterator对象
   istream_iterator<T> in            创建超出末端迭代器的istream_iterator对象
   ostream_iterator<T> in(strm)      创建将T类型的对象写到输出流strm的ostream_iterator对象
   ostream_iterator<T> in(strm, delim) 同上,在写入过程中使用delim作为元素的分隔符
   流迭代器都是类模板:任何已定义输入操作符(>>操作符)的类型都可以定义istream_iterator,输出同理。
   注:ostream_iterator对象必须与特定的流绑定在一起
  
  
(3)反向迭代器(reverse iterator)--向后遍历rbegin和rend
   例:降序排列vector,对sort传递一对反向迭代器:sort(vec.rbegin, vec.rend)
(4)const_iterator(不需要iterator头文件):这样定义是不希望使用这个迭代器来修改容器中的元素
容器特有的算法:
list容器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值