笔记:《C++ Primer》第3章

关键字:标准库类型

1、标准库string类型中,用getline函数读取整行文本。它只要遇到换行符,即使它是输入的第一个字符,getline也将停止读入并返回。getline接受两个参数:一个输入流对象,一个string对象。如下:

int main()

{

    string line;

    while(getline(cin,line))

    {

        cout<<line<<endl;

    }

    return 0;

}

2、任何存储string操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋值给一个int变量。这是因为size_type能存储的string长度是int所能存储的两倍。如下所示:

#include <iostream>

#include <string>

 

using namespace::std;

int main()

{

         string str("Hello World! ");

         string::size_type n=str.size();

         cout << "The size of "<<endl << str << "is " << n<< endl;

    for(string::size_type ix=0; ix!=str.size(); ++ix)

        str[ix]!='*';

         cin.get();

         return 0;

}

    vector的情况与之类似,如下:

vector<int> a;

...

vector<int>::size_type n=a.size();

3、当进行string 对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string 类型的。如下所示:

string s1="hello";

string s2="world";

string s3=s1+", ";             //ok

string s4="hello"+"world";     //error

4、C++程序员习惯于优先选用!=而不是<来编写循环判断条件。

5、对于vector来说,必须是已经存在的元素才能用下标操作符进行索引。

6、标准库容器的iterator迭代器中,end操作指向末端元素的下一个,并不指向任何实际的元素,仅仅起到哨兵的作用。

7、采用“*操作符”来访问迭代器所指向的元素。如果迭代器指向容器的第一个元素,那么*iter和n[0] 指向的是同一个元素。

8、const_iterator相比一般的迭代器而言,只能用于读取容器内的元素,而不能改变其值。

9、迭代器相减,如“iter1-iter2”,用来计算两个迭代器对象的距离,该距离是名为difference_type的signed类型的值。

10、任何改变vector长度的操作都会使已存在的迭代器失效。

11、bitset类用于处理二进制位的有序集。

原文地址:https://www.cnblogs.com/3sxiaofu/p/4573703.html