C++泛型编程学习(4)

vector详解:

|| vector是一个单端数组,与普通数组的区别在于:普通数组是一个静态空间,vector可以动态扩展

|| 动态扩展的实质:并不是在原有数组上直接扩展,而是找到另外一个空间再将新数组拷入到这个新空间

|| vector的迭代器是最强大的随机访问迭代器,所以其成员函数的有些参数是异于string的成员函数的

|| vector的构造函数(初始化)【默拷重区】— 归功于强大的迭代器vector可定区间赋值

|vector<T> v;   // 默认构造函数
|vector(const vector &vec);  // 拷贝构造函数。
|vector(v.begin(), v.end());   // 将v [begin(), end()) 区间中的元素拷贝给本身。
|vector(n, elem);   // 构造函数将n个elem拷贝给本身。

|| vector的赋值 【重区】— 归功于强大的迭代器vector可定区间赋值

|“ = ”赋值:
|vector& operator=(const vector& vec)

|assign赋值 --- 传入子集时使用
|vector.assign(v'.begin(), v'.end())// 将v [begin(), end()) 区间中的元素拷贝给本身
|vector.assign(10, 100)  // 重复次数和重复字符

|| vector的容量和大小

|empty()   --// 判空返回true或false
|capacity()  --//返回容器容量
|size()	--//返回容器长度(元素个数)
|resize(int num, elemtype elem = 0)  --// 重新定义数组长度,若变长则以elem(默认为0)填充,变短则删除超出部分

|| vector的插入和删除

|push_back(elem) 
|pop_back()
|insert(const_iterator pos, int count = 1, elemtype elem)  
//在迭代器指向的位置插入count个elem 注意:必须使用迭代器指明位置,插入个数不指明时为1
|erase(const_iterator pos)    // 删除迭代器指定位置的元素
|erase(const_iterator pos_start, const_iterator pos_end) // 删除迭代器指定位置间的所有元素
|clear()

|| vector的读取

| [ ]读取
|at读取
|front()
|back()

|| vector的交换

| swap(vector &vec)  // 交换两个vector的值
实际用途:交换函数配合匿名拷贝函数可以巧妙地收缩占用空间
	vector< int >(v1).swap(v1) // v1是有空间浪费的数组,我们匿名拷贝构造v1时匿名创建了
	一个无空间浪费的完美数组,与原v1 swap后,v1获得了无浪费的空间,获得了垃圾空间的
	匿名数组自动清除。

|| vector预留空间 – 减少vector动态扩展时的扩展次数

|reserve(int len) // 容器预留len个长度的位置,预留位置上不可访问不用初始化
发布了32 篇原创文章 · 获赞 65 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a13352912632/article/details/104333008
今日推荐