STL库:标准模板库
c++中动态数组写成 vector,c中没有标准库
引用库:#include<vector>
using namespace std;
构造动态数组:vector<T>vec 表示一个名为vec的存储T类型数据的动态数组,T可以是 int,double,float,也可以是其他自定义的数据类型
vector<int>a 表示一个存储整数的动态数组a
插入元素:push_back()
#include<vector>
using namespace std;
int main()
{ vector<int>vec;//vec[]
vec.push_back(1);//vec[1]
vec.push_back(2);//vec[1,2]
vec.push_back(3);//vec[1,2,3]
return 0;
}
获取长度并且访问元素:size()
#include<vector>
#include<stdio.h>
using namespace std;
int main()
{ vector<int>vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for(int i=0;i<vec.size();i++)
{ cout<<v[i]<<endl;
}
return 0;
}
修改元素:=
#include<vector>
#include<stdio.h>
using namespace std;
int main()
{ vector<int>vec;//vec[]
vec.push_back[1];//vec[1]
vec.push_back[2];//vec[1,2]
vec.push_back[3];//vec[1,2,3]
vec[1]=3;//vec[1,3,3]
vec[2]=2;//vec[1,3,2]
return 0;}
删除元素:pop_back()
#include<vector>
#include<stdio.h>
using namespace std;
int main()
{ vector<int>vec;//vec[]
vec.push_back[1];//vec[1]
vec.push_back[2];//vec[1,2]
vec.push_back[3];//vec[1,2,3]
vec.pop_back();//vec[1,2]
vec.pop_back();//vec[1]
return 0;
}
清空:clear() 只是清空vector,并不会清空开的内存
用另外一种方法可以清空内存
vector<int>v;
vector<int>().swap(v);
1-10的平方:
#include<iostream>
#include<vector>
using namespace std;
int main()
{ int i;
vector<int>v;
for(i=1;i<=10,i++)
{ v.push_back(i*i);
}
for(i=0;i<v.size();i++)
{
cout<<v[i]<<" ";
}
return 0;
}
动态数组还能储存自定义的数据类型,比如结构体
struct student{
string name;
int age;};
int main()
{
vector<student>class1;
student stu1,stu2;
stu1.name="张三";
stu2.name="李四";
stu1.age=18;
stu2.age=20;
class1.push_back(stu1);
class1.push_back(stu2);
return 0;
}
如果我们需要长度为n,元素全为1的动态数组
int n=10;
vector<int>vec(n,1);
二维数组:
vector<vector<int> >vec2