不定长数组:vector
定义
vector是一个线性顺序结构。相当于数组,但其大小可以不预先指定,并且自动扩展。它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组。
vector的声明
头文件
#include <vector>
using namespace std;
声明
vector <数据类型> 数组名
vector <int> v1; //构造一个空的Vector
vector <int> v1(5); //构造一个大小为5的Vector
vector <int> v1(5, 42); //构造了一个包含5个值为42的元素的Vector
vector <int> v2(v1); //用v1初始化v2
vector <int> v2(v1.begin(), v1.begin()+3); //用v1的第0个到第2个数据初始化v1
//也可以用数组来初始化
int v3[] = {1, 2, 3, 4, 5};
vector <int> v2(v3, v3+5);
vector <int> v2(v3[1], v3[4]);
vector的操作
vector的输入输出
1.可以直接像数组一样利用[]来输入输出。
2.可以使用at()函数来操作,类似与[],但更加安全。
3.使用迭代器来操作。
vector<int>::iterator t ;
for(t=a.begin(); t!=a.end(); t++)
cout<<*t<<" " ;
vector的其他操作
1.at() 返回指定位置的元素
2.back() 返回最末一个元素
3.begin() 返回第一个元素的迭代器
4.capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
5.clear() 清空所有元素
6.empty() 判断Vector是否为空(返回true时为空)
7.end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
8.erase() 删除指定元素
语法:
iterator erase( iterator loc );//删除loc处的元素
iterator erase( iterator start, iterator end );//删除start和end之间的元素
9.front() 返回第一个元素的引用
10.get_allocator() 返回vector的内存分配器
11.insert() 插入元素到Vector中
语法:
iterator insert( iterator loc, const TYPE &val );
//在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
void insert( iterator loc, size_type num, const TYPE &val );
//在指定位置loc前插入num个值为val的元素
void insert( iterator loc, input_iterator start, input_iterator end );
//在指定位置loc前插入区间[start, end)的所有元素
12.max_size() 返回Vector所能容纳元素的最大数量(上限)
13.pop_back() 移除最后一个元素
14.push_back() 在Vector最后添加一个元素
15.rbegin() 返回Vector尾部的逆迭代器
16.rend() 返回Vector起始的逆迭代器
17.reserve() 设置Vector最小的元素容纳数量
//为当前vector预留至少共容纳size个元素的空间
18.resize() 改变Vector元素数量的大小
语法:
void resize( size_type size, TYPE val );
//改变当前vector的大小为size,且对新创建的元素赋值val
19.size() 返回Vector元素数量的大小
20.swap() 交换两个Vector
语法:
void swap( vector &from );
二维向量
与数组相同, 向量也可以增加维数, 例如声明一个m*n大小的二维向量方式可以像如下形式:
vector< vector<int> > b(10, vector<int>(5));
//创建一个10*5大小的二维vector
操作类似于二维数组。
网友评论