下面就以邻接表为例展开介绍。
struct edge{//定义边
int from,to,value;
}
const int maxn = 1e5+5;
//声明:
vector<edge> map[maxn];//一维向量相当于二维数组,便于理解。
在这里,如果我们使用二维数组存邻接表,需要开销一个1e10的空间,如果图中实际边数只有1e6,用数组无疑会造成极大浪费。
1.3.1 //初始化:
for(int i=0;i<maxn;i++)
{
map[i].clear();
//clear函数能清空向量,不是变成0,是清空。
}
下面还是用vector<int> a作为样例
a:{1,2,3,4,5,6,7,8,9}
1.3.2 //求向量中元素个数
int n = a.size();//此时n等于9
1.3.3 //取向量首个元素的迭代器
vector<int>::iterator it = a.begin();
注意这里得到的是迭代器,如果要直接得到值:
1.3.4 //取向量首个元素值
int value = a.front();//此时value等于1
1.3.5 //和begin对应的是end
vector<int>::iterator it = a.end();
注意,这里的it指向向量a末尾的下一个位置,注意是下一个位置,下一个位置。
1.3.6 //和front对应的是back,取向量尾部的元素值
int value = a.back();//此时value等于9
1.3.7 //直接下标访问(这个地方和数组很像)
int value0 = a[0];//下标从0开始的,所以下标是不超过a.size()-1的
int value1 = a[1];
1.3.8 //往尾部添加一个元素(重要,重要,重要)
由于我们不知道再添加元素是放在哪里,所以搞了个push_back函数,往尾部添加一个元素。
a.push_back(value);
//若value为1,则 a:{1,2,3,4,5,6,7,8,9,1}
1.3.9 //与之对应,我们还有pop_back(),用于删除尾部第一个元素。
a.pop_back();//pop后,序列为 a:{1,2,3,4,5,6,7,8}
1.3.10 //前面提到了reverse函数,翻转向量。
a.reverse(a.begin() , a.end());
//翻转后的序列 a:{9,8,7,6,5,4,3,2,1}
1.3.11 //判断向量是否为空
bool isempty = a.empty();
向量为空 isempty等于true,否则等于false
c++ vector(不定长数组,向量)
最新推荐文章于 2022-10-12 23:00:15 发布