C++笔记2

来源:互联网 发布:深圳网络统考英语 编辑:程序博客网 时间:2024/06/10 12:01
1.最重要的两个标准库类型:string, vector。
2.字符串字面值与标准库不是同一类型,编程时要区分字面值和string数据类型的使用。
3.string类型的输入操作符:读取并忽略开头所有的空白字符;读取字符直至再次遇到空白字符。
4.getline函数接受两个参数,一个是输入流对象,一个string对象。由于getline函数返回时丢弃换行符,所以换行符将不会存储在string对象中。
5.size操作返回的是string::size_type 类型的值。特别重要的是,不要把size的返回值赋给int变量。因为size的返回值最大会比int的大一倍。
6.大多数string库类型的赋值等操作的实现都会遇到一些效率问题。
7.当进行string对象和字符串链接操作时,必须保证+操作符的左右操作数最少有一个是string类型的。
8.tolower函数和toupper函数返回值是字符。直接cout必将是ASCII值。
9.vector并不是一种数据类型,而只是一个类模版,可以用来定义多种数据类型。因此,vector<int>和vector<stinrg>都是数据类型。
10.vector的动态增长,这是她的重要属性。虽然可以对给定额袁术个数的vector对象预先分配内存,但是更有效的方法是先初始化一个vector对象然后再动态的增加元素。(随后的章节介绍)
11.使用size_type类型时,必须指出该类型在哪里定义的,比如vector<int>::size_type
12.安全的泛型编程。想size这些小函数,几乎都定义为inline函数。
13.必须是以存在的元素才能使用下标操作符进行索引.切记,运行时错误的一种。
14.end操作返回的迭代器是末端元素的下一个:超出末端迭代器。起到哨兵的作用
15.const_iterator,只用于读取元素。不要将它和const iterator混淆。
16.iter1 - iter2计算两个迭代器距离,距离名是difference_type的signed类型的值。比如
vector<int>::iterator mid = (a.begin() + a.size())/2;这样求得效率要比从头自增效率高。
17.动态分配数组时,如果数组元素具有类类型,将使用默认构造函数实现初始化;如果是内置类型,无初始化。
18.允许动态分配空数组
19.在为字符串非配空间的时候注意为'\0'保存一个位置。
20.使用数组初始化vector对象。
21.值初始化的()语法必须置于类型名的后面,而不是变量名后。
22.老问题,注意消除野指针。
原创粉丝点击