C++ Primer阅读笔记(3)

第三章 标准库类型

Posted by SixTeen on April 16, 2016

第三章 标准库类型

1.::作用域操作符,使用using声明就可以直接引用名字,而不需要饮用该名字的命名空间。

2.标准string类型,string类型支持长度可变的字符串。

#include<string>
using std::string;

3.cin»str;忽略开头所有空白,读取直到再次遇到空白

4.getline读取整行文本。getline不忽略开头的换行符,但这时候str是空串。getline(cin,line);因为getline默认将\n作为定界符,我们可以getline(cin,line,'#')这样就将#作为定界符。

str.empty();
str.size();

5.size()的返回类型是string::size_type,它与unsigned具有相同的含义,但是通过这些配套类型,库类型的使用就能与机器无关。

for(string::size_type i = 0; i != str.size();i++){
    str[i];
}

6.vector是一个类模板(class template),vector不是一种数据类型,而是一个类模板,可以用来定义任意多种数据类型。

7.

vec.empty();
vec.size();
vec.push_back(t);
for(vector<int>::size_type i = 0; i != vec.size(); i++){
    vec[i];
}

8.调用size成员函数而不保存它的返回值,因为如果增加了元素的话,那么已保存的size值作为循环结束条件就会有问题。

9.迭代器iterator。vector<int>::iterator it;若一种类型支持一组确定的操作(这些操作可以遍历容器内的元素,并访问这些元素的值),我们就称这种类型为迭代器。

10.begin和end。begin返回迭代器指向的第一个元素,end返回末端元素的下一个,如果vector是空的,那么begin和end相同。

11.解引用符。*it;访问迭代器所指向的元素。不能对end迭代器使用自增和解引用。

for(vector<int>::iterator it = vec.begin(); it != vec.end(); it++){
    *it;
}

12.只读迭代器。vector<int>::const_iterator it;这种只读迭代器自身的值可以改变,但不能用来改变其所指向的元素的值。这和const vector<int>::iterator it = vec.begin();(这种迭代器没什么作用)是不一样的。

13.迭代器算术操作vector<int>::iterator mid = vec.begin()+vec.size()/2

14.bitset<32> bitvec32位全是0

string str("1100");
bitset<32> bitvec(str);//bitvec中第二和第三位是1,其他位置都是0
//string对象的字符个数小于bitset长度,高阶位将置为0
bitvec.any();//false->all zero
bitvec.none();//true->all zero
bitvec[index];
bitvec.test(i);//测试某个二进制位是否为1
1
FIN 4.20/1.15