我们在使用C语言的时候用到的是int arr[]定义数组,它的缺点是数组的长度不能随心所欲的改变,而C++里面呢有一个可以完全代替数组的动态数组vector,它能够在运行阶段设置数组的长度、在末尾增加新的数据、在中间插入新的值、长度任意被改变。使用的时候要引入头文件#include<vector>
和using namspace std,vector、stack(栈)、queue(队列)、map、set(集合)这些在C++中都可以叫做容器,这些容器的大小都可以用==.size()==来获取,就像string s的长度用s.length()获取一样。
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>v1;//定义一个vector v1,定义的时候没有分配大小
cout<<v1.size();//输出vector v1的大小,此处应该为0
return 0;
}
vector 可以一开始不定义它的大小,之后用resize方法分配大小,也可以一开始就定义大小,之后还可以对他进行插入或者删除动态来改变它的大小,而且不管是在main函数里面还是在全局中定义,它都能够直接讲所有的值初始化为0(不用显示地写出来,默认就是所有的元素为0),再也不用担心C语言里面出现的那种int arr[10],结果却忘记初始化为0导致的各种bug了。
vector<int>v(10);//直接定义长度为10的int数组,默认这10个元素都是0
//或者
vector<int>v1;
v1.size(9);//定义一个vector 变量v1,然后将长度resize为9,默认这9个元素都是0
//在定义的时候可以对vector变量进行初始化
vector<int>v3(100,9);//把100长度的数组中的值都初始化为9
//访问的时候像数组一样直接用[]下标访问即可
v1[1]=2;
cout<<v[0];
不管是vector、stack、map、queue还是set都有很多好用的方法,这些都可以在添加链接描述官网直接查询它的用法。下面说一下vector的常用方法
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int>a;//定义的时候不指定vector的大小
cout<<a.size()<<endl;//这个时候size是0
for(int i=0;i<10;i++){
a.push_back(i);//在vector a的末尾添加一个元素i
}
cout<<a.size()<,endl;//此时会发现a的size变成了10
vector<int>b(15);//定义的时候指定vector的大小,但是默认b里面的元素都是0
cout<<b.size()<<endl;
for(int i=0;i<b.size();i++){
b[i]=15;
}
for (int i=0;i<b.size();i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
vector<int>c(20,2);//定义的时候指定vector的大小并把所有的元素赋予一个指定的值
for (int i=0;i<c.size();i++){
cout<<c[i]<<" ";
}
cout<<endl;
for (auto it=c.begin();it!=c.end();it++){
//使用迭代器的方式访问vector
cout<<*it<<" ";
}
return 0;
}
容器vector、set、map这些遍历的时候都是使用迭代器访问的,c.begin()是一个指针,指向容器的第一个元素c.end()指向容器的最后一个元素的后一个位置,所以迭代器指针it的for循环判断条件是it!=c.end()
访问元素的值要对it指针取值,要在前面加星号所以是cout<<*it;