C++ Primer 笔记——第二部分(容器和算法)

本文详细介绍了C++标准模板库(STL)中的顺序容器和关联容器,包括vector、list、deque、stack、queue、priority_queue、map、set、multimap及multiset等,并解释了它们的特点和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第9章 顺序容器

顺序容器
1) vector:支持快速随机访问
2) list:支持快速插入删除
3) deque:双端队列
1. 容器定义的类型别名:
这里写图片描述
2. 容器的beg和end成员:
这里写图片描述
3. 添加元素:
这里写图片描述
4. 删除元素:
这里写图片描述
5. 访问元素:
这里写图片描述
6. 容器大小的操作:
这里写图片描述
这里写图片描述
7. 赋值和交换:
这里写图片描述
迭代器
1. 任何修改容器内部元素的操作都可能使迭代器失效。
顺序容器适配器
1. 适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。
2. stack和queue适配器都基于deque容器实现, priority_queue适配器基于vector容器实现的。
3. 适配器通用操作:
这里写图片描述
 栈:
s.push(item) :在栈顶压入新元素
s.pop() :删除栈顶元素,但不返回其值
s.top() :返回栈顶元素的值,但不删除该元素
 队列:
q.push(item) :在队尾插入新元素
q.pop() :删除队首元素,不返回其值
q.front() :返回队首元素的值,但不删除该元素
q.back() :返回队尾元素的值,但不删除该元素
q.emplace() :
 优先级队列
q.push(item) :在基于优先级的适当位置插入新元素。
q.pop() :删除队首元素,不返回其值
q.top() :返回最高优先级的值,但不删除该元素
q.emplace() :

第10章 关联容器

  1. 关联容器:支持通过键来高效地查找和读取元素。
     map:关联数组,元素通过键来存储和读取
     set:大小可变的集合,支持通过键实现快速读取
     multimap:支持同一个键多次出现的map型
     multiset:支持同一个键多次出现的set型
  2. pair类型:两个成员first和second
    这里写图片描述
  3. map类型:
    1) map对象的定义:
    这里写图片描述
    2) map定义的类型:
map<K,V>::key_type :键的类型
   map<K,V>::mapped_type :键锁关联的值的类型
   map<K,V>::value_type :pair类型

3) 给map添加元素:
 使用下标访问,不存在时自动添加
 使用insert插入
4) 查找map中的元素:
cout(k) :返回k出现的次数
find(k) :存在返回对应的迭代器,不存在则返回超出末端的迭代器
5) 从map中删除元素:
这里写图片描述
4. set类型
 set类型只是单纯的键的集合。
 当只想知道一个值是否存在时,使用set容器是最适合的。
 set不支持下标操作。
 set和map一样,键值时不可修改的,只可读出。
5. mutlimap和mutliset类型
 允许一个键对应多个实例。
 其他特殊的操作:
这里写图片描述

第11章 泛型算法

  1. 泛型:算法可以操作在多种容器上、内置数组类型甚至其他类型的序列上。
  2. 算法是基于迭代器及其操作实现,而并不是基于容器操作。
  3. 插入迭代器:是可以给基础容器添加元素的迭代器。
  4. 算法迭代器分5个类别:
    这里写图片描述
  5. 算法形式:
    这里写图片描述
  6. list特有得算法:
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值