2010.7.20第三章标准库类型

今天看完了这一章,主要讲了string类,vector容器,迭代器,和bitset类的特点,操作和一些值得注意的地方,string和vector相对于C语言来说更倾向整体的操作,用惯了char类型和数组和指针对于类的操作一下显得有点不适应。下面总结这几个类得一些要注意的地方。

一.string类型;

  1.string的size操作返回的是string::size_type类型,不要把size返回值赋给int变量,因为string::size_type是unsigned型的,而int是signed型的所以size_type是int储存长度的两倍,赋给int变量可能会丢失精度。

  2.运用string的+操作符时候,左右操作数必须至少有一个是string类型的。例如string s="hello"+" world!"是错误的,两个没有一个是string类型的。

 二.vector

1.使用size_type类型时,vector类型总包括vector的元素类型,例如vector<int>::size_type.

2.必须是与存在的元素才能用下标操作符进行索引,通过下标操作进行赋值时,不会添加任何元素,例如:

vector<int> ivec;

for(vector<int>::size_type ix=0;ix!=10;ix++)

     ivec[ix]=ix;//错误的 ,下标只能用于已经存在的对象。

正确做法应该是定义时候用vector<int> ivec[10] ,但这样很笨拙,最灵活的是用ivec.push_back(ix);这样不用一开始规定对象的大小。

三.迭代器

1.注意,vector<int>::iterator iter=ivec.end()返回的是vector的末端元素的下一个 而不是 最后的那个元素。

2.const_iterator与const的iterator的区别,简单来说就是const的iteratror当初始化指向了某个vector的元素的时候,他就再也不能指向其他的元素了,但可以修改被他指向的那个元素。而const_iterator可以访问和读取不同的元素。但是不能修改元素的值。

3.迭代器的算术操作有iter+n,iter-n,iter1-iter2.对于最后一个操作是计算两个迭代器对象的距离,返回值是difference_type的signed类型。但是没有两个迭代器相加的操作例如iter1+iter2.

四.bitset

1.用string对象初始化bitset对象的读入的顺序是从右向左的。

2.bitset的count函数返回值类型是size_t的unsigned类型。size_t的定义在头文件cstddef中。

你可能感兴趣的:(c,vector,String,iterator,语言,2010)