|
向量( vector )
向量与数组相比的优点:
l 向量与数组的共同特征是元素的排列在逻辑上是线性序列结构,可以用下标进行访问
l 向量可以按需创建,拷贝创建,局部拷贝创建,异类拷贝和创建
l 灵活的初始化
l 随意扩容和元素增减
l 可通过异常来进行下标溢出追踪和处理
l 可比较
常用操作:
使用时要包含vector头文件。
int t[5]={1,2,3,4,5};
vector<int> a(n); //按需创建
vector<int> b(10, 1); //10个元素赋全1,灵活的初始化
vector<int> c(b); //整体拷贝创建
vector<int> f(t, t+5); //异类拷贝创建
迭代器定义:
Vector <int> ::iterator it;
It为定义的迭代器,为指针类型;
b.begin();迭代器指向第一个元素位置;
b.end();迭代器指向最后一个元素的后一个位置;
b.size();求得向量里的元素数;
vector<int> d(b.begin(), b.begin()+3); //局部拷贝创建d为b的前3个元素
a.assign(100); //动态扩容至100个元素
a.assign(b.begin(), b.begin()+3); // b的前3个元素赋给a
a.assign(4,2); // a向量含4个元素,全初始化为2
int x = a.back(); // a的最后一个元素赋给变量x
a.clear(); // a向量清空(不再有元素)
if(a.empty()) cout<<”empty”; // a判空操作
int y = a.front(); // a的第一个元素赋给变量y
a.pop_back(); //删除a的最后一个元素
a.push_back(5); // a最后插入一个元素,其值为5
a.resize(10); // a元素个数调至10。多删少补,其值随机
a.resize(10,2);//a元素个数调至10。多删少补,新添元素初值为2
if(a==b) cout<<”equal”; // a与b的向量比较操作
下面随便写的一些代码,只是为了说明和测试上面的函数:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a,int b);
int main()
{
int i;
vector<int> a;
for(i=1;i<=10;i++)
a.push_back(i);
for(i=0;i<a.size();i++)
cout<<a;
cout<<endl;
vector <int>::iterator it;
for(it=a.begin();it!=a.end();it++)
cout<<*it;
cout<<endl;
int x=a.back();
cout<<x<<endl;
vector <int> c(a);
int y=c.front();
cout<<y<<endl;
a.pop_back();
for(it=a.begin();it!=a.end();it++)
cout<<*it;
cout<<endl;
a.resize(12);
for(it=a.begin();it!=a.end();it++)
cout<<*it;
cout<<endl;
a.resize(15,2);
for(it=a.begin();it!=a.end();it++)
cout<<*it;
cout<<endl;
c.clear();
if(c.empty)
cout<<"向量已为空!\n";
vector <int> d(a.begin(),a.begin()+5);
for(it=d.begin();it!=d.end();it++)
cout<<*it;
cout<<endl;
sort(a.begin(),a.end(),cmp);
(这是提到的排序算法,随便提一下,具体可以在找资料看一下)
for(it=a.begin();it!=a.end();it++)
cout<<*it;
cout<<endl;
}
bool cmp(int a,int b)
{ return a>b; }
文章来源:蜗牛COM 电脑社区——http://56woniu.5d6d.com【详细参考】:原文地址——http://56woniu.5d6d.com/thread-221-1-2.html
|
|