关键字:标准库类型
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!\n");
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类用于处理二进制位的有序集。