vector介绍
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector随机访问的复杂度是O(1),插入数据的复杂度是 O(n)。对vector遍历通常有两种方式:通过下标、利用迭代器。
vector该怎么用?
定义和对应的输入、访问某一数据和删除vector:
C++ Vectors可以使用以下任意一种参数方式构造:
1、无参数 - 构造一个空的vector
#include <iostream>
#include<vector>
using namespace std;
int main()
{
//1、定义了一个空的vector "v"
vector<int> v;
for (int i=0;i<5;i++){
v.push_back(i);//
}
int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
cout<<m<<endl;
for(int i=1;i!=v.size();i++)//这里我用codeblocks他会出waring,但如果我把int换成vector<int>::size_type,就不会报,因为size_type 相当于 unsigned int类型,使用size_type 主要是为了适应不同的平台,int 类型大小会根据不同平台而不同
cout<<v[i]<<" ";
return 0;
}
2、数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vector
#include <iostream>
#include<vector>
using namespace std;
int main()
{
//第二种定义方法
vector<int> v(5,3);//构造5个值为3
int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
cout<<m<<endl;
for(int i=1;i!=v.size();i++)
cout<<v[i]<<" ";
return 0;
}
3、vector(from) - 构造一个与vector from 相同的vector
4、迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间元素的Vector(注:半开区间).(这两个不太懂,以后遇见补上)
vector添加数据的方法有两种:
1、一种是在尾部添加元素,使用的函数是push_back()函数:
#include <iostream>
#include<vector>
using namespace std;
int main()
{
//1、定义了一个空的vector "v"
vector<int> v;
for (int i=0;i<5;i++){
v.push_back(i);//
}
int m=v.at(3); //当我想输出7(并不存在)时,编译器会报错。
cout<<m<<endl;
for(int i=1;i!=v.size();i++)//这里我用codeblocks他会出waring,但如果我把int换成vector<int>::size_type,就不会报,因为size_type 相当于 unsigned int类型,使用size_type 主要是为了适应不同的平台,int 类型大小会根据不同平台而不同
cout<<v[i]<<" ";
return 0;
}
2、另一种是在指定位置插入元素,使用到的函数是insert()函数。
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.insert(v.begin(),10);//在开始之前,插入10
for (vector<int>::size_type i=1;i<5;i++){
v.push_back(i);
}
for(vector<int>::size_type i=0;i!=v.size();i++)
cout<<v[i]<<" ";
return 0;
}
用迭代器在数据之间插入数据:
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for (vector<int>::size_type i=1;i<5;i++){
v.push_back(i);
}
vector<int>::iterator t;
for(t=v.begin();t!=v.end();t++){
if(*t==3)
{v.insert(t,9);//在3之前,插入10
break;} //找到了一定要break;否则会死循环
}
for(vector<int>::size_type i=0;i!=v.size();i++)
cout<<v[i]<<" ";
return 0;
}
还可以用erase()删除某一元素
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for (vector<int>::size_type i=1;i<5;i++){
v.push_back(i);
}
vector<int>::iterator t;
for(t=v.begin();t!=v.end();t++){
if(*t==3)
{v.erase(t);//删除第三个数
break;} //找到了一定要break;否则会死循环
}
for(vector<int>::size_type i=0;i!=v.size();i++)
cout<<v[i]<<" ";
return 0;
}
还有clear(),清空vector中的所有元素。
pop_back(),删除末尾的元素。
size(),返回的是vector的大小。等等…