vector:连续存储结构,每个元素在内存上是连续的,因为在插入和删除时候,存在内存的拷贝,效率相对list较为低下,但是在尾部插入效率还可以接受,随机插入删除不推荐。
在使用vector容器时候,需要注意头文件#include<vector> 和using namespace std,以下是vector的简单使用。
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
typedef struct student
{
char name[20];
int age;
}STUDENT;
int main(int argc, char* argv[])
{
int i = 0;
vector<STUDENT> vec; //声明一个vector容器
STUDENT pStu;
/*在容器中添加三个结构体数据*/
for (i = 0; i < 3; i++)
{
pStu.age = 1;
sprintf(pStu.name, "test%d", i);
vec.push_back(pStu);
}
/*声明一个迭代器it指向vector容器第一个位置*/
vector<STUDENT>::iterator it = vec.begin();
while ( it != vec.end() )
{
cout << (*it).age << ", " << (*it).name << endl;
it++;
}
return 0;
}
另外vector相关的成员函数如下:
push_back 在数组的最后添加一个数据
pop_back 去掉数组的最后一个数据
at 得到编号位置的数据
begin 得到数组头的指针
end 得到数组的最后一个单元+1的指针
front 得到数组头的引用
back 得到数组的最后一个单元的引用
max_size 得到vector最大可以是多大
capacity 当前vector分配的大小
size 当前使用数据的大小
resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
reserve 改变当前vecotr所分配空间的大小
erase 删除指针指向的数据项
clear 清空当前的vector
rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
empty 判断vector是否为空
swap 与另一个vector交换数据