C++ primer阅读之IO库和顺序容器

第八章 IO库

1. IO类:ifstream 和istringstream都继承自istream。普通流,文件流和string流。

2.IO对象不可拷贝或赋值。只能通过引用的方式来使用,且不能加const,因为读写会改变其状态。

3.刷新和写操作是两个过程,一般系统讲多个输出组合成单一的写操作。操作符endl,flush和ends可以实现刷新缓冲区,但各有不同。unitbuf和nonunitbuf了解。

4.当一个fstream对象被销毁时,close会被自动调用。

5. out模式打开文件会丢弃已有数据,除非再制定app模式。

6、istringstream应用场景:对整行文本进行处理,然后需要处理行内单个单词。ostringstream则是相反。

 

第九章 顺序容器

1. 现代C++程序应该使用标准库容器,效率更高。通常选vector是很好的选择。

2.容器均为模板类型,需呀额外提供元素类型信息生成特定的容器类型。                                         

3.当不需要写访问时,应该使用cbegin和cend。

4.array具有固定大小,定义时,除了类型,还要制定大小。array<int, 42>.默认构造的array是非空的。

5.array可以进行拷贝和赋值。内置数组不行。array不能使用assign操作。

6.除了array外,swap不会对元素进行拷贝,删除等操作,可以很快完成,也不会使迭代器等失效。

7.容器元素是拷贝。

8. vector不支持push_front,但是可以插入到begin()之前,insert。

9.insert返回插入的新元素的迭代器。

10.新标准提出emplace,emplace_back和emplace_front,是直接把参数传给类型的构造函数,不是像push_back那样拷贝。

11.容器首位元素,front()和back();

12.at成员函数会检查下标越界;

13.删除元素后,返回的迭代器指向我们要删除的最后一个元素之后一个位置。

14.forward_list添加后删除元素比较特殊,insert_list, erase_after,关注前驱和当前迭代器。

15.resize改变容器大小。

16.容器添加或删除元素,迭代器失效的情况。

17.若在一个循环中插入删除容器里的元素,不要缓存end返回的迭代器,因为它会失效。

18.vector并不是每次添加新元素都会重新分配内存空间,这样会很慢;而是每次分配空间时,会分配比需求空间更大的内存空间备用。

19.理解vector的size和capacity的区别。容器大小管理操作:capacaity()和reverse();

20.从const char* 创建string时,数组必须以空字符结尾。若还传递给构造函数一个技术值,数组就不必以空字符结尾。否则构造函数行为未定义。

21.string的插入和删除除了用迭代器之外,还可以用下标。replace是对erase和insert的一种简写形式。

22.string搜索返回的是unsigned类型,因此用int或别的有符号保存不好。如果搜不到,返回string::npos.

23.rfind反向搜索。

24.compare函数,比较string大小。

25.数值转换:to_string,stoi, stod。

26.容器适配器,是一种机制,使已有的容器表现的 像另一种不同的类型。

27.stack适配器只要求右push_back,pop_back和back的操作。priority_queue除了front,push_back和pop_back操作外,还要有随机访问的能力。

28.stack底层是deque实现,但不能直接用deque的操作。queue默认给予deque实现,priority_queue基于vector实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值