vector 容器
C++ vector 容器
一、什么是vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
二、容器特性
1.顺序序列
顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。
2.动态数组
支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。提供了在序列末尾相对快速地添加/删除元素的操作。
3.能够感知内存分配器的(Allocator-aware)
容器使用一个内存分配器对象来动态地处理它的存储需求。
三、基本用法
#include < vector> 
using namespace std;
四、简单介绍
Vector<类型>标识符
Vector<类型>标识符(最大容量)
Vector<类型>标识符(最大容量,初始所有值)
Int i[5]={1,2,3,4,5}
Vector<类型>vi(I,i+2);//得到i索引值为3以后的值
Vector< vector< int> >v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过
五、实例
#include <vector> #include <iostream> using namespace std; void vector1() { vector<int> obj; for (int i=0 ;i<10;i++) { obj.push_back(i);//push_back 在数组的最后添加一个数据 cout<<obj[i]<<","; } cout<<endl; cout<<obj.size(); for (int i=0;i<5;i++) { obj.pop_back();//void pop_back():删除向量中最后一个元素 } cout<<endl; cout<<obj.size(); cout<<endl; for (int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } obj.clear();//清除容器中所以数据 cout<<endl; cout<<obj.size(); } #include <algorithm> void vector2() { vector<int> obj; obj.push_back(1); obj.push_back(3); obj.push_back(0); sort(obj.begin(),obj.end());//从小到大排列 for (int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } cout<<endl; reverse(obj.begin(),obj.end());//从大到小排列 for (int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } } void vector3() { //访问 (直接数组访问&迭代器访问) //顺序访问 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<<" "; } } void vector4() { //二维数组两种定义方法 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); //resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值 } for(int i=0; i< obj.size(); i++)//输出二维动态数组 { for(int j=0;j<obj[i].size();j++) { cout<<obj[i][j]<<" "; } cout<<endl; } } void vector5() { 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"; } }
 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号