vector:向量,长度根据需要而自动改变的数组,用于解决普通数组超内存的情况,也可以用来以领接表的方式存储图
使用vector:添加vector头文件#include
1.vector的定义
vector name;
相当于一维数组name[SIZE],但长度可以变化
vector name;
vector name;
vector name;
vector name; // node是结构体
如果typename是vector
vector<vector > name; // >>之间需要加空格否则视为移位操作
二维数组定义
vector Arrayname[arraySize];
vector vi[100];
2.添加元素——push_back()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 3; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
for(int i = 0; i < vi.size(); i++) //size()函数会给出vi中元素的个数
{
printf("%d", vi[i]);
}
return 0;
}
1 2 3
3.删除尾元素——pop_back()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 3; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
vi.pop_back(); //删除vi的尾元素3
for(int i = 0; i < vi.size(); i++) //size()函数会给出vi中元素的个数
{
printf("%d", vi[i]);
}
return 0;
}
1 2
4.获取元素个数——size()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 3; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
printf("%d\n", vi.size()); //size()返回的是usigned
return 0;
}
3
5.清除所有元素——clear()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 3; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
vi.clear();
printf("%d\n", vi.size()); //size()返回的是usigned
return 0;
}
0
6.元素访问——iterator
vector:: iterator it;
可以理解为指针
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
//vi.begin()为取vi的首元素地址,而it指向这个地址
vector<int>::iterator it = vi.begin();
for(int i = 0; i < 5; i++)
{
printf("%d", *(it + i)); //输出vi[i]——vi[i]与*(vi.begin()+i)等价
}
return 0;
}
1 2 3 4 5
7.插入元素 ——insert()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 1; i <= 5; i++) //将123依次插入vi末尾
{
vi.push_back(i);
}
vi.insert(vi.begin() + 2, -1); //将-1插入到vi[2]的位置
for(int i = 0; i < vi.size(); i++)
{
printf("%d", vi[i]);
}
return 0;
}
1 2 -1 3 4 5
8.删除元素——erase()
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> vi;
for(int i = 5; i <= 9; i++)
{
vi.push_back(i); //插入5 6 7 8 9
}
// 删除8(因为vi.begin()对应是vi[0],所以8不是vi.begin() + 4)
vi.erase(vi.begin() + 3);
for(int i = 0; i < vi.size(); i++)
{
printf("%d", vi[i]);
}
return 0;
}
5 6 7 9