vector
来源:互联网 发布:js调用java代码 编辑:程序博客网 时间:2024/05/01 13:51
vector向量容器(动态数组)
vector不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的的容器,
完全可以代替数组。
值得注意的是,vector具有内存自动管理的功能,对于元素的插入和删除,可动态调整所占的内存空间。
vector容器的下标是从0开始,和数组有很多相似之处,但它比数组更灵活。
下面是vector的常用方法:
#include<vector>
创建
vector<in_type>vec;
vector<class>vec(10);
vector<double>vec(10,8.6);
元素扩张
push_back(type);
迭代器 以及 遍历工具
vector<type>::iterator it;
*it可以访问元素的内容
begin() and end()
元素插入以及删除函数
insert(vec.begin()+2,type);
erase(vec.begin()+1);//删除一个
erase(vec.begin()+1,verbegin()+5);//删除一段
clear();//清空之后size变为0
reverse()反向排列算法
reverse( vec.begin(),vec.end() );//反向排列
sort()算法
sort()算法要求使用随机访问迭代器进行排序,在默认情况下,对元素进行升序排列。
sort( vec.begin(),vec.end() );//从头到尾 从小到大排列
bool comp(tpye a,tpye b);//自动定义比较函数,可以改变排序方法
sort(vec.begin(),vec.end(),comp);//自定义的比较方式
向量的大小
vec.size();//
vec.empty();//
编程范例1:使用迭代器遍历所有元素,然后输出所有元素之和
#include<iostream>
#include<vector>
#include<numeric>
using nmaespace std;
int main()
{
vector<int>v;
int i;
for(i=0;i<10;i++)
v.push_back(i);
//定义迭代器,然后遍历所有元素
vector<int>::iterator it;
for(it=v.begin();it!=v.end;it++)
cout<<*it<<endl;
cout<<endl;
//统计所有元素之和,然后输出
cout<<accumulate(v.begin(),v.end(),0)<<endl;
return 0;
}
编程范例2:定义以及扩张元素(还有下表式访问元素)
#include<iostream>
#include<vector>
using namespace std;
struct node
{
int data;
};
int main()
{
vector<node>v;
vector<int>v1;
vector<int>v2(10);
vector<int>v3(10,5);//空间为10,元素全部是5
for(int i=0;i<10;i++)
{
v1.push_back(i);
v2[i]=v2[i];
}
for(int i=0;i<10;i++)
{
cout<<v1[i]<<'\t'<<v2[i]<<'\t'<<v3[i]<<endl;
}
cout<<v1.size()<<'\t'<<v2.zise()<<endl;
return 0;
}
编程范例3://元素删除
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int>v(10);
for(int i=0;i<10;i++)
{
v[i]=i;
}
v.erase(v.begin()+2);
vector<int>::iterator it;
for(it=v.begin();it!=v.end();i++)
{
cout<<*it<<" "<<endl;
}
v.erase(v.begin()+1,v.begin()+5);//删除四个元素
for(it=v.begin(),it!=v.end(),it++)
{
cout<<*it<<" "<<endl;
}
v.clear();
cout<<v.size()<<endl;
return 0;
}
编程范例4:反向遍历算法
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<int>v(10);
for(int i=0;i<10;i++)
v[i]=i;
for(int i=0;i<10;i++)
cout<<v[i]<<" ";
reverse( v.begin(),v.end() );//将元素反向存储
vector<int>::iterator it;
for(it=v.begin();it!=v.end();i++)
cout<<*it<<" ";
cout<<endl;
return 0;
}
编程范例5,6:sort算法对向量进行排序
默认情况下进行升序排序,然而可以通过自定义比较函数
来改变排序方式,如果使用结构体,则必须自定义比较函数.
the easy one:
#include<iostream>
#include<vector>
#include<algorithm>
int main()
{
vector<int>v;
int i;
for(i=0;i<10;i++)
v.push_back(9-i);
for(i=0;i<10;i++)
cout<<v[i]<<" ";
cout<<endl;
sort( v.begin(),v.end() );
for(i=0;i<10;i++)
cout<<v[i]<<" ";
cout<<end;
return 0;
}
the more useful:
#include<vector>
#include<iostream>
#include<algorithm>
using namespae std;
bool Comp(const int a,const int b)
{
return a>b;
}
int main()
{
vector<int>v;
int i;
for(i=0;i<10;i++)
{
v.push_back(i);
}
for(i=0;i<=9;i++)
cout<<v[i]<<" ";
cout<<endl;
sort(v.begin(),v.end(),Comp);
for(i=0;i<10;i++)
cout<<v[i]<<" ";
cout<<endl;
return 0;
}
0 0
- vector
- vector
- Vector
- Vector
- vector
- vector
- VECTOR
- VECTOR
- VECTOR
- vector
- vector
- Vector
- vector
- vector
- vector
- Vector
- vector
- vector
- RMAN 系列(二) ---- RMAN 设置和配置
- 五招带你看条码防伪技术现状
- Python进阶(上)
- Android利用ContentResolver查询的三种方式
- Smart Card Subsystem Architecture
- vector
- leetcode--Decode Ways
- UIViewController全部API的学习。
- Windows下安装HBase
- linux系统下用到的小知识点积累
- OC入门--基本知识(终端)
- BonID URL
- 给一个数组,求他的子串,使该子串的和最大
- RMAN 系列(一)---- RMAN 体系结构概述