数组是基本的数据结构,由静态数组和动态数组的两种类型
vector是动态数组,不仅节约空间,而且不容易出错
功能 | 例子 | 说明 |
---|---|---|
定义int型数组 | vector < int > a; vector < int > b(a); vector < int > a(100); vector < int >a(100,6); | 默认初始化,a为空 用a定义b a有100个值为0的元素 a有100个值为6的元素 |
定义string型数组 | vector < string > a(10,“null”); vector < string > vec(10,“hello”); vector < int > b( a.begin() , a.end() ); | 10个值为null的元素 10个值为hello的元素 b是a的赋值 |
定义结构型数组 | struct point { int x, y; }; vector < point > a; | a用来存坐标 |
还可以定义多维数组,如
vector <int> a[MAXN]
第一维的大小是固定的MAXN,第二维是动态的
可以用这种方式实现图的邻接表存储
功能 | 例子 | 说明 |
---|---|---|
begin | a.begin( ) + i; | 返回a[ i ]的地址 |
end | a.end( ); | 返回a[ MAXN - 1 ]的地址 |
赋值(尾部插入) | a.push_back( 100 ); | 在尾部添加元素 |
元素个数 | int size = a.size( ); | 元素个数 |
是否为空 | bool isEmpty = a.empty(); | 判断是否为空 |
打印 | cout << a[ 0 ] << endl; | 打印第一个元素 |
中间插入 | a.insert( a.begin( ) + i , k ); | 在第 i 个元素前面插入一个元素 k |
删除尾部 | a.pop_back( ); | 删除末尾元素 |
删除区间 | a.erase( a.begin( ) + i , a.begin( ) + j ); | 删除区间[ i , j ]的元素 |
删除元素 | a.erase( a.begin( ) + i ); | 删除第 i 个元素 |
调整大小 | a.resize( n ); | 数组大小变为 n |
清空 | a.clear( ); | 清空 |
翻转 | reverse( a.begin( ) , a.end( ) ); | 用函数reverse( )翻转数组 |
排序 | sort( a.begin( ) , a.end( ) ); | 用函数sort( )排序,从小到大 |