C++ Primer 学习笔记 第9章 顺序容器 9.4 9.5 9.6

9.4 vector对象是如何增长的

vector和string的实现通常会分配比新的空间需求更大的内存空间,容器预留这些作为备用,可用来保存更多的新元素。

当需要的内存空间超过当前容量时,reserve调用才会改变vector的容量。

如果需求大小大于当前容量,reserve至少分配与需求一样大的内存空间。

在调用reserve之后,capacity将会大于或等于传递给的reserve参数。

调用reserve永远不会减少容器占用的内存空间。

只有在执行insert操作时size与capacity相等,或调用resize或reserve时给定大小超过capacity,vector才重新分配内存空间。

shrink_to_fit只是一个请求,标准库不保证退还内存。

9.5 额外的string操作

9.5.1 构造string的其他方法

string s(cp,n) 若未传递计数值且数组也未以空字符结尾,或者给定计数值大于数组大小,则构造行为未定义。

string s(s2,pos2) 若位置大于size,则构造函数抛出一个out_of_range异常。

string s(s2,pos2,len2) 若传递一个计数值,则最多拷贝到结尾。

s.substr(pos,n) 返回一个string,包含从pos开始的n个字符的拷贝。

9.5.2 改变string的其他方法

s.insert(pos,args) 运行使用一个下标或迭代器指定插入点。

s.erase(pos,len)

s.assign(args) assign总是替换string中的所有内容。

s.append(args) append总是将新字符追加到string末尾。

s.replace(range,args) 可以通过一个位置和一个长度指定范围,也可以是一个迭代器范围。

9.5.3 string搜索操作

每个搜索操作都返回一个string::size_type值。若搜索失败,则返回一个名为string::npos的static成员。

标准库将npos定义为一个const string::size_type类型,并初始化值为-1,此初始值意味着npos等于任何string的最大可能大小。

9.6 容器适配器

顺序容器适配器:stack、queue、priority_queue。

默认情况下,stack和queue是基于deque实现的,priority_queue是在vector上实现的。可以重载默认容器类型。

stack<string,vector<string>> str_stk;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值