《C++ Primer Plus》之string类和标准模板库笔记

第十六章 string类和标准模板库 阅读笔记

>string对象有size()和length()两个函数都是返回字符串中的字符数,那么为什么要有这两个完成相同功能的函数呢?

length()成员来自较早版本的string类,而size则是为提供STL兼容性而添加的.

>c_str()方法返回const char*,可以将string对象转换为C风格字符串

>STL提供了一组表示容器、迭代器、函数对象和算法的模板。

容器 :是一个与数组类似的单元,可以存储若干个值,STL容器是同质的,即存储的值的类型相同。

算法:是完成特定任务的解决方法。

迭代器:是能够用来遍历容器的对象,与能够遍历数组的指针类似,是广义指针。

函数对象:是类似于函数的对象,可以是类对象或函数指针(包括函数名)。

>vector模板类:需要使用的头文件是#include 。提供了随机访问功能,所以可以用下标操作或者vec.begin()+2,表示第三个元素

基本方法包括size()-------返回容器中元素数目;

swap()-------交换两个容器的内容;

begin()-------返回一个指向容器中第一个元素的迭代器;

end()-------返回一个表示超过容器尾的迭代器。

特有的方法包括 push_back():将元素添加到矢量末尾。

     erase():删除矢量中给定区间的元素。它接受两个迭代器参数,第一个迭代器指向区间的起始处,第二个迭代器位于区间终止后的后一个位置。

     insert():它接受三个迭代器参数,第一个参数指定了新元素的插入位置,第二个和第三个迭代器参数定义了被插入区间,该区间通常是另一个容器对象的一部分。对于这种情况拥有超尾元素是非常方便的,比如

old.insert(old.end(),new.begin()+1,new.end());//将新元素插入到old.end()前面,即矢量最后一个元素的后面

>对指向迭代器的指针进行广义化使得STL能够为各种不同的容器类(包括那些简单指针无法处理的类)提供统一的接口。每个容器类都定义了一个合适的迭代器,其作用域为整个类。

>STL是一种通用编程技术(generic programming),面向对象编程关注的是编程的数据方面,而通用编程技术关注的是算法。它们之间的共同点是抽象和创建可重用代码。通用编程技术旨在编写独立于数据类型的代码,而模板使得能够按通用类型定义函数或类。

>每个容器类都定义了相应的迭代器类型。STL定义了5种迭代器,分别是输入迭代器、输出迭代器、正向迭代器、双向迭代器和随机访问迭代器。

          1.输入迭代器

              “输入”是从程序的角度说的,即来自容器的信息被视为输入。输入迭代器可被程序用来读取容器中的信息,对输入迭代器解除引用将使程序能够读取容器中的值,但不一定能让程序修改值。输入迭代器是单向迭代器,可以递增但不能倒退。


你可能感兴趣的:(C++读书摘录,C++,string,STL)