11/7/2 STL vector (2)

 

1.矢量的容量与大小

容量(capacity)指矢量目前所占据的内存的大小,表示一种存储的能力

大小(size)表示目前矢量的容量中已经使用部分的大小,

       vec.size() 返回矢量中元素的个数,如果矢量中只有第0号元素,则size为1

empty() 函数返回一个bool值,是用来判断矢量是否为空(即 size 是否为0)如果为空,则返回true,不为空则返回false

max_size() 函数可能不常用,是用来返回矢量vector<T>最大容量的函数,容量与T类型相关(【疑问】仅与T类型有关?)

resize() 函数重新制定矢量的size,如果指定了更大的size,则用第二参数补全剩余的空间,如果未指定第二参数,int 默认为0, 类类型调用默认构造函数

而如果指定了更小的size,则截取矢量尾部的元素

一个有趣的现象是,在矢量自动增加容量的时候,容量的增加量是原容量的一半。如果原容量为13,则增加6

2.用迭代器遍历矢量的实例

迭代器的类型是vector<T>::iterator

   1:  for(vector<T>::iterator iter = vec.begin(); iter < vec.end(); iter++) 
   2:          cout<<*iter<<endl;
 

3.访问矢量中元素以及增删操作

at() 函数类似于 下标访问运算符 [] ,但是当越界的时候 at() 函数会抛出一个 out_of_range 类型的异常

front() 函数可以返回矢量的第一个元素的值,而不是迭代器

back() 函数返回矢量的尾元素的值,而不是迭代器

pop_back() 函数可以删除矢量尾的一个元素,多次操作可以清空矢量

但也可以直接调用 clear() 函数,删除矢量的所有元素,将大小size 置为0,但不改变矢量的容量

insert() 函数的3个版本:

1.insert(iterator , T) 可以用来在迭代器所指位置插入一个T类型对象

2.insert(iterator , int n, T) 用来在迭代器所指的位置插入 n 个 T类型对象

3.insert(iterator ,iterator , iterator ) 用来在第一个迭代器所指的位置,插入第二个迭代器与第三个迭代器之间的序列,注意,第三个迭代器指向要插入的元素序列的最后一个元素的下一个位置

erase() 两个版本:

版本一:一个参数,类型为迭代器,用来删除该迭代器所指位置的元素

版本二:二个参数,类型均为迭代器,用来删除序列,第二个迭代器指元素序列最后一个元素的下一个位置

swap() 交换两个矢量,两个矢量的 T 要相同,交换后,容量,大小,内容均交换(可以理解为是交换名称)

实例:vec1.swap(vec2);

assign() 用另一个序列替代矢量中的 全部 内容,注意,使用该函数,第一步先要删除矢量中的所有内容。   有两个版本。

版本1:assign(iterator , iterator ) 两个迭代器指向一个序列的始末位置,第二个迭代器仍是指末尾元素的下一位, 也可以用常规指针来代替迭代器,注意,第二个指针也是指向序列的末尾元素的下一个位置

版本2:assign(int , T ) 替换为n个T类型元素

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章