动态数组(vector)

2021-03-11 12:31

阅读:324

标签:vector   定义   添加   ble   区间   ``   cto   erase   排序   

1.功能介绍
vector底层就是一个数组,当你向该数组中添加元素不足时自动扩大。
2.常用命令
(1)vector a;
定义一个数据元素类型为 int 的 vector。类型可以为任何的基本类型,如 int、double、char、结构体、甚至vector,如二维vector a:

vector> a;

(2)a.clear();
初始化,清空数据,但是不会释放内存,如首先分配了 10,000 个字节,然后erase掉后面9,999 个,则虽然有效元素只有一个,但是内存占用仍为 10,000个。但是大部分是不会卡内存的,除非多组数据+数据量很大。
(3)向尾部插入a

a.push_back(a);

(4)a.size()
vector 当前元素个数,下标从 0 开始
如遍历 vector :

for(int i=0; i 

(5)遍历 vector

vector::iterator it;
//it 是 vector 的迭代器,我们也可以用迭代器遍历vector,如:
for(it=a.begin();it!=a.end();it++) cout

(7)对 vector 内的数据元素进行排序。

sort(a.begin(),a.end(),cmp)

(8)在第 i+1 个元素前面插入 x

a.insert(a.begin()+i,x);。

(9)删除第 c 个元素。

a.erase(a.begin()+c-1);

(10)删除 i 到 j-1 这个区间的元素

a.erase(a.begin()+i,a.begin()+j);//insert 和 erase 操作是 o(n)的,时间复杂度大,不推荐使用。

3.应用举例:边的存储

struct EDGE {
	int u,v,w; //表示一条从 u 到 v 权值为 w 的有向边
	EDGE (int a, int b, int c) {
		u=a, v=b, w=c;
	}
};
vector e[N];
e[a].push_back(EDGE(a,b,c));//插入边
//存储一条以 a 为起点的有向边

动态数组(vector)

标签:vector   定义   添加   ble   区间   ``   cto   erase   排序   

原文地址:https://www.cnblogs.com/zyq21/p/STL_vector.html


评论


亲,登录后才可以留言!