向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器同样,它可以存放各类类型的对象。能够简单的认为,向量是一个可以存听任意类型的动态数组。linux
顺序容器中的元素按照严格的线性顺序排序。能够经过元素在序列中的位置访问对应的元素。ios
支持对序列中的任意元素进行快速直接访问,甚至能够经过指针算述进行该操做。操供了在序列末尾相对快速地添加/删除元素的操做。数组
容器使用一个内存分配器对象来动态地处理它的存储需求。函数
1.构造函数spa
1.push_back 在数组的最后添加一个数据.net
2.pop_back 去掉数组的最后一个数据指针
3.at 获得编号位置的数据code
4.begin 获得数组头的指针对象
5.end 获得数组的最后一个单元+1的指针blog
6.front 获得数组头的引用
7.back 获得数组的最后一个单元的引用
8.max_size 获得vector最大能够是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,若是它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另外一个vector交换数据
#include < vector> using namespace std;
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj;//建立一个向量存储容器 int for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 { obj.push_back(i); cout<<obj[i]<<","; } for(int i=0;i<5;i++)//去掉数组最后一个数据 { obj.pop_back(); } cout<<"\n"<<endl; for(int i=0;i<obj.size();i++)//size()容器中实际数据个数 { cout<<obj[i]<<","; } return 0; }
输出结果为:
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj; for(int i=0;i<10;i++)//push_back(elem)在数组最后添加数据 { obj.push_back(i); cout<<obj[i]<<","; } obj.clear();//清除容器中因此数据 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<endl; } return 0; }
输出结果为:
0,1,2,3,4,5,6,7,8,9,
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { vector<int>obj; obj.push_back(1); obj.push_back(3); obj.push_back(0); sort(obj.begin(),obj.end());//从小到大 cout<<"从小到大:"<<endl; for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } cout<<"\n"<<endl; cout<<"从大到小:"<<endl; reverse(obj.begin(),obj.end());//从大到小 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } return 0; }
输出结果为:
从小到大: 0,1,3, 从大到小: 3,1,0,
1.注意 sort 须要头文件 #include <algorithm>
2.若是想 sort 来降序,可重写 sort
bool compare(int a,int b) { return a< b; //升序排列,若是改成return a>b,则为降序 } int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<< a[i]<< endl; sort(a,a+20,compare);
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { //顺序访问 vector<int>obj; for(int i=0;i<10;i++) { obj.push_back(i); } cout<<"直接利用数组:"; for(int i=0;i<10;i++)//方法一 { cout<<obj[i]<<" "; } cout<<endl; cout<<"利用迭代器:" ; //方法二,使用迭代器将容器中数据输出 vector<int>::iterator it;//声明一个迭代器,来访问vector容器,做用:遍历或者指向vector容器的元素 for(it=obj.begin();it!=obj.end();it++) { cout<<*it<<" "; } return 0; }
输出结果为:
直接利用数组:0 1 2 3 4 5 6 7 8 9 利用迭代器:0 1 2 3 4 5 6 7 8 9
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int N=5, M=6; vector<vector<int> > obj(N); //定义二维动态数组大小5行 for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0 { obj[i].resize(M); } for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j<obj[i].size();j++) { cout<<obj[i][j]<<" "; } cout<<"\n"; } return 0; }
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int N=5, M=6; vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列 for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j<obj[i].size();j++) { cout<<obj[i][j]<<" "; } cout<<"\n"; } return 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 0