C++标准模板库-----vector

vector 概述:


  • vector可以理解为不定长数组,
  • vector 数组的定义:需要加上vector头文件
# include <vector>
//vector<typename> arryname;
vector <int > myArray;
vector<node> myArray2; //node 是结构体;
vector<double> myArray3;
vector<vector<int> > array;// 两维均可变长的变长二维数组  >>之间一定要有空格> > 
//否则c11之前认为是向右可能报错
vector<int> array2[100];// 这就定义了100个变长数组(vector容器)这里的一维长度已经固定了

vector 容器内元素的访问

  • 直接根据数组的下标访问:
  • 用迭代器访问(类似于指针);
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int>::iterator  it;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
for(it=array.begin();it!=array.end();it++)
{
	printf("%d ",*it);
}
 }
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int>::iterator it;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
it=array.begin();
for(int i=0;i<4;i++)
{
	printf("%d ",*(it+i));
}
 }

vector 常用函数:

  • push_back(); 在vector容器后面加上值
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int>::iterator it;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
it=array.begin();
for(int i=0;i<4;i++)
{
	printf("%d ",*(it+i));
}
 }
  • pop_back 在vector最后面删除一个元素;
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array1;
vector<int>::iterator it;
for(int i=0;i<4;i++)
{
	array1.push_back(i);
}
//it=array1.begin();
array1.pop_back();
for(int i=0;i<array1.size();i++)
{
	printf("%d ",array1[i]);
}
 }
  • size()得到一个unsigned类型的整数表示vector数组元素的个数
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int>::iterator it;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
//it=array1.begin();
printf("%d\n",array.size());
array.pop_back();
printf("%d",array.size());
 }
 // 结果为:
 //4
 //3
  • clear()清除vector 容器内所有的元素, 时间复杂度为O(n) n为容器内元素数
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int>::iterator it;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
//it=array1.begin();
printf("%d\n",array.size());
array.pop_back();
printf("%d\n",array.size());
array.clear();
printf("%d",array.size());
 }
 //结果为:
 //4
 //3
 //0
  • insert(it,x) 向vector的任意迭代器地址it处插入元素 x;时间复杂度为O(n);
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
vector<int>::iterator it=array.begin();
array.insert(it+2,100);
for(int i=0;i<=4;i++)
{
	printf("%d ",array[i]);
}
 }
 // 结果是:
 //0 1 100 2 3
  • erase() 有两种使用方法 erase(it) 删除指定位置的元素,
  • erase(start,end) 删除左开右闭区间内 的元素 erase(vi.begin(),vi.end())也可以实现清空vector 容器内的所有元素
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
vector<int>::iterator it=array.begin();
array.insert(it+2,100);
array.erase(array.begin()+2);
for(it=array.begin();it<array.end();it++)
{
	printf("%d ",*it);
}
 }
 //结果为:
 //0 1 2 3

删除一个区间:左闭右开区间

#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
for(int i=0;i<4;i++)
{
	array.push_back(i);
}
vector<int>::iterator it=array.begin();
array.insert(it+2,100);
array.erase(array.begin()+2,array.begin()+4);
for(it=array.begin();it<array.end();it++)
{
	printf("%d ",*it);
}
 }
 、、结果为:0 1 3
vector 可以用于当数组元素的个数不确定的时候,来节省储存空间或者邻近表储存图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值