一、是什么vector?

矢量(Vector)是一点钟封装了静态主体装饰的挨次状况(Sequence 状况)。像若干对立的事物典型的状况同样的,它可以贮藏各式各样的典型的女朋友。。轻易蓄意的,矢量是一点钟静态装饰,可以贮藏在若干典型中。。


二、状况特点

1。序列序列

挨次状况做成某事元素按迫切的的一次的挨次排序。。可以经过元素的得名次要求有重大意义的的元素。。

2。静态装饰

遭受对序列中若干元素的走得快和直接地要求。,甚至可以经过方针吃光作用。。在E中对元素的绝对走得快添加/切除的作用。

三。可以知觉内存分派者(分派者意识)

状况应用内存分派者女朋友来静态处置其贮藏。。


三、根本功用创造

1。结构有或起作用

  • vector():准备一点钟空vector
  • vector(int nSize):准备一点钟vector,元素的全部效果是nSead
  • vector(int nSize,const t& t):准备一点钟vector,元素的全部效果是nSead,值是t
  • vector(const vector&):繁殖结构有或起作用
  • vector(begin,完毕:繁殖[开端],end)区间内另一点钟装饰的元素到vector中

2。附加有或起作用

  • void push_back(const T& x):元素x被添加到矢量的臀部。
  • iterator 拔出(迭代器) it,const T& x):矢量做成某事迭代器在指路t以前将元素添加到x中。
  • iterator 拔出(迭代器) it,int n,const T& X):矢量做成某事迭代器在指路
  • iterator 拔出(迭代器) it,const_iterator first,const_iterator last):矢量中迭代器指路元素前拔出另一点钟平稳的典型矢量的[first,datum的复数中间的顶点一次)

三。切除有或起作用

  • iterator 磨损(迭代器) 切除矢量做成某事迭代器指路元素
  • iterator 磨损(迭代器) first,iterator 顶点):切除矢量做成某事原生的点钟,顶点的元素)
  • void POPYBACK():切除矢量做成某事顶点一点钟元素
  • void 离开():空矢量做成某事个人财产元素

4。遍历有或起作用

  • reference AT(int) 现场恢复POS得名次元素的援用
  • reference 前():对原生的点钟元素的援用
  • reference 现场恢复():援用尾元素
  • iterator 开端():现场恢复矢量头方针,指路原生的点钟元素
  • iterator 完毕():现场恢复到矢量尾方针,指路矢量的顶点一点钟元素的下一点钟得名次。
  • reverse_iterator Rbegin():反向迭代器,指路顶点一点钟元素
  • reverse_iterator RAND():反向迭代器,原生的元素以前的得名次

5。断定有或起作用

  • bool empty() 断定矢量倘若为空,即使它是空的,矢量中没元素

6。面积有或起作用

  • int size() const回归矢量做成某事元素号码
  • int capacity() Const:现场恢复涌流矢量张宏的最大元素值。
  • int max_size() const:现场恢复最大可容许的vector元素全部效果值

7。对立的事物功用

  • void swap(vector&):交易所两个同典型矢量的datum的复数
  • void 作业(int) n,const T& x):集中矢量做成某事n个元素的值是x
  • void assign(const_iterator first,const_iterator 顶点):[矢量做成某事原生的点钟],顶点的元素)设置成涌流矢量元素

8。看清晰的

在装饰末了添加datum的复数

切除装饰的顶点datum的复数

推进编号得名次的datum的复数

获取装饰头的方针

获取装饰的顶点一点钟单元的方针, 1

6.front 获取装饰头的援用

对装饰顶点一点钟单位的援用。

接见vector最大可以是多大

涌流vector分派的主体

涌流应用datum的复数的主体

更改涌流datum的复数的主体,即使它比涌流应用的要大,填写Windows 默认值

更改涌流VECoTR分派的圈占地的主体

切除方针管理的的datum的复数项

清空涌流的vector

15.rbegin 将vector反复后的开端方针现场恢复(实在执意原型的end-1)

将vector反复构的完毕方针现场恢复(实在执意原型的begin-1)

断定vector倘若为空

与另一点钟vector交易所datum的复数


四、根本用法

#include < vector> 
using namespace std;

五、简略引见

  1. Vector<典型>身份证
  2. Vector<典型>身份证(最大电流容量)
  3. Vector<典型>身份证(最大电流容量),初始个人财产值)
  4. Int i[5]={1,2,3,4,5}
    Vector<典型>VI(I),i 2);/ /在i调为3晚年的推进值
  5. Vector< vector< int> >v; 二维矢量//这边最外的<>要求空格。要不然,它不克不及在旧编辑者下递送。

围住

推进运动(EELM)围住在CON的结束移除和拔出datum的复数。

围住

#include<string.h>#include<vector>#include<iostream>usingnamespacestd;

intmain(){vector<int>obj;for(inti=0;i<10;i++){obj.push_back(i);
cout<<obj[i]<<,;
}for(inti=0;i<5;i++){obj.pop_back();
}cout<<\n<<endl;

for(inti=0;i<obj.size();i++){cout<<obj[i]<<,;
}return0;
}

出口末后为:

0,1,2,3,4,5,6,7,8,9,

0,1,2,3,4,

离开状况做成某事datum的复数

围住

#include<string.h>#include<vector>#include<iostream>usingnamespacestd;

intmain(){vector<int>obj;
for(inti=0;i<10;i++){obj.push_back(i);
cout<<obj[i]<<,;
}obj.clear();for(inti=0;i<obj.size();i++){cout<<obj[i]<<endl;
}return0;
}

出口末后为:

0,1,2,3,4,5,6,7,8,9,

三。归类

围住

#include<string.h>#include<vector>#include<iostream>#include<algorithm>usingnamespacestd;

intmain(){vector<int>obj;

obj.push_back(1);
obj.push_back(3);
obj.push_back(0);

sort(obj.begin(),obj.end());cout<<从小到大:<<endl;
for(inti=0;i<obj.size();i++){cout<<obj[i]<<,;
}cout<<\n<<endl;

cout<<由大到小<<endl;
reverse(obj.begin(),obj.end());for(inti=0;i<obj.size();i++){cout<<obj[i]<<,;
}return0;
}

出口末后为:

从小到大:
0,1,3,

由大到小
3,1,0,

1。注重 sort 需求头寄给报社 #include

2。即使你以为 sort 来降序排列,可重写 sort

bool 比拟(int) a,int b) 
{ 
    return a< b; //升序排列,即使改为return a>b,则为降序排列 
} 
int a[20]={2,4,1,23,5,76,0,43,24,65},i; 
(I=0;I)<20;i++) 
    cout<< a[i]<< endl; 
sort(a,a+20,compare);

4。要求(直接地装饰要求和迭代器要求)

围住

#include<string.h>#include<vector>#include<iostream>#include<algorithm>usingnamespacestd;

intmain(){vector<int>obj;
for(inti=0;i<10;i++){obj.push_back(i);
}cout<<"装饰的直接地应用:";
for(inti=0;i<10;i++){cout<<obj[i]<<"";
}cout<<endl;
cout<<"应用迭代器:" ;
vector<int>::iteratorit;for(it=obj.begin();it!=obj.end();it++){cout<<*it<<"";
}return0;
}

出口末后为:

装饰的直接地应用:0 1 2 3 4 5 6 7 8 9 
应用迭代器:0 1 2 3 4 5 6 7 8 9

5。二维装饰的两种界说(平稳的的末后)

方式一

#include<string.h>#include<vector>#include<iostream>#include<algorithm>usingnamespacestd;

intmain(){intN=5, M=6;
vector<vector<int> > obj(N); for(inti =0; i< obj.size(); i++){obj[i].resize(M);
}for(inti=0; i< obj.size(); i++){for(intj=0;j<obj[i].size();j++){cout<<obj[i][j]<<"";
}cout<<"\n";
}return0;
}

方式二

#include<string.h>#include<vector>#include<iostream>#include<algorithm>usingnamespacestd;

intmain(){intN=5, M=6;
vector<vector<int> > obj(N, vector<int>(M)); for(inti=0; i< obj.size(); i++){for(intj=0;j<obj[i].size();j++){cout<<obj[i][j]<<"";
}cout<<"\n";
}return0;
}

出口末后为:

0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 
0 0 0 0 0 0 

原文地址:

发表评论

电子邮件地址不会被公开。 必填项已用*标注