1.功能介绍 vector 底层就是一个数组,当你向该数组中添加元素不足时自动扩大。
2.常用命令
(1) vector a; 定义一个数据元素类型为 int 的 vector。类型可以为任何的基本类型,如 int、 double、char、结构体、甚至 vector,如二维 vector a :vector< vector< int> > a;一维:vector<int> a;
(2) a.clear(); 初始化,清空数据,但是不会释放内存,如首先分配了 10,000 个字节,然后 erase 掉后面 9,999 个,则虽然有效元素只有一个,但是内存占用仍为 10,000 个。但是大部分是不会卡内存的,除非多组数据+数据量很大,或者使用memset也可以。
(3)a.push_back(b); 向尾部插入 b
(4)a.size() vector 当前元素个数,下标从 0 开始 如遍历 vector :for (int i=0; i < a.size(); i++)~;
(5)a[x] 引用 vector 下标为 x 的元素,跟数组一样。
(6)sort(a.begin(),a.end()) 对 vector 内的数据元素进行排序。也可以使用自定义函数排序
(7) a.insert(a.begin()+i,x) 6 在第 i+1 个元素前面插入 x。
(8) a.erase(a.begin()+2) 删除第 3 个元素。
(9) a.erase(a.begin()+i,a.begin()+j); 删除 i 到 j-1 这个区间的元素 。 insert 和 erase 操作是 o(n)的,时间复杂度大,不推荐使用。
3..应用举例:边的存储 struct edge { int u,v,w; //表示一条从 u 到 v 权值为 w的有向边 }; vector e[N]; e[a].push_back( (edge){a,b,c } ); 存储一条以 a 为起点的有向边。
制作不易,请点一个不要钱的赞,谢谢!
点赞果14514,光速更新下一篇。