标签:vector 定义 添加 ble 区间 `` cto erase 排序
1.功能介绍
vector底层就是一个数组,当你向该数组中添加元素不足时自动扩大。
2.常用命令
(1)vector
定义一个数据元素类型为 int 的 vector。类型可以为任何的基本类型,如 int、double、char、结构体、甚至vector,如二维vector a:
vector<vector<int>> 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 < a.size(); i++) cout<<a[i]<<” “;
(5)遍历 vector
vector<int>::iterator it;
//it 是 vector 的迭代器,我们也可以用迭代器遍历vector,如:
for(it=a.begin();it!=a.end();it++) cout<<*it<<endl;
//a.begin()是起始元素地址,a.end()是最后元素的下一个地址,*it 是元素的值。
(6)引用 vector 下标为 x 的元素。
```cpp
a[x]
(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<EDGE> e[N];
e[a].push_back(EDGE(a,b,c));//插入边
//存储一条以 a 为起点的有向边
标签:vector 定义 添加 ble 区间 `` cto erase 排序
原文地址:https://www.cnblogs.com/zyq21/p/STL_vector.html