vector用法
程序员文章站
2022-03-22 21:41:34
...
一、#include < vector >
-
vector可理解为变长数组,它的内部实现基于倍增思想。
-
vector支持随机访问,即对于任意下标0 <= i < n,可以像数组一样用【i】取值。但它不是链表,不支持在任意位置O(1)插入。为了保证效率,元素的增删一般应该在末尾进行。
-
size()/empty()
size函数返回vetor的实际长度(包含的元素个数),empty函数返回一个bool类型,表明vector是否为空。2者的时间复杂度都是O(1)。 -
clear(): 把vector清空
-
push_back(x): 把元素x插入到vector的尾部。
迭代器:
- 迭代器就像STL容器的“指针”,可以用星号“*”操作符访问值。
- vector的迭代器是“随机访问迭代器”,可以把vector的迭代器与一个整数相加减,其行为和指针的行为相似。
- 可以把vector的两个迭代器相减,其结果也和指针相加减类似,得到2个迭代器对应的下标的距离。
- begin()函数返回指向vevtor中第一个元素的迭代器,begin() 与【0】的作用相同。
- end()函数返回vector的尾部,即第n个 元素再往后的“边界”
vector<int> a; //相当于一个长度动态变化的int数组
//迭代器遍历
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) {
printf("%d ", *it);
}
printf("\n");
代码:
#include <vector> //引入头文件
#include <cstdio>
#include <iostream>
using namespace std; //使用命名空间
vector<int> a; //相当于一个长度动态变化的int数组
vector<int> b[205]; //相当于一维长205,第二维长度动态变化的int数组
struct node {
int x,y;
};
vector<node> c;
int main() {
//pushback(x) 把元素x 插入到vector a的尾部
a.push_back(1); //相当于a[0]
a.push_back(2); //a[1]
a.push_back(3); //a[2]
//2个迭代器相加减 得到下标之差
cout << a.end() - a.begin() << endl;
//第一种遍历方式
for (int i = 0; i < a.size(); i++) {
printf("%d ", a[i]);
}
printf("\n");
//迭代器遍历
for (vector<int>::iterator it = a.begin(); it != a.end(); it++) {
printf("%d ", *it);
}
printf("\n");
b[0].push_back(1); //相当于b[0][0]
b[0].push_back(2);//b[0][1]
b[0].push_back(3);//b[0][2]
for (int i = 0; i < b[0].size(); i++) {
printf("%d\n", b[0][i]);
}
//结构体同理
//clear()函数将vector清空
a.clear();
//size() 获取vector里面的元素个数
cout << "vecotor a 的元素个数 :" << a.size() << endl;
cout << "vecotor b[0] 的元素个数 :" << b[0].size() << endl;
return 0;
}
上一篇: vector用法
下一篇: 【vector】用法