linux下练习 c++ 容器的vector的特性

来源:互联网 发布:男人花网络女主播是谁 编辑:程序博客网 时间:2024/05/17 23:39

//vector.cpp

/*vector的特性当前容量:.capacity()约定容量:.reserve()下标:.operator[](i) ,.at(i) 越界抛出异常*/#include<iostream>using namespace std;#include<vector>#include<exception>#include<typeinfo>#include "print.h"void print(const vector< vector<int> >& v)//相当于二维数组{for(int i=0;i<v.size();i++){for(int j=0;j<v[i].size();j++)cout<<v[i][j]<<' ';cout<<endl;}}int main(){vector<double> vt,vt2;//默认容量成倍增长,4,8,16……for(int i=1;i<10;i++){vt.push_back(i+0.2);cout<<vt.size()<<'/'<<vt.capacity()<<' ';}cout<<endl;vt2.reserve(9);//只分配这么多,不成倍增长for(int i=1;i<10;i++){vt2.push_back(i+0.3);cout<<vt2.size()<<'/'<<vt2.capacity()<<' ';}cout<<endl;vt.at(3)=30.50;//修改值vt[4]=40.70;try{for(int i=0;i<vt.size();i++)cout<<vt.at(i)<<' ';cout<<endl;}catch(exception& e){cout<<"\n异常:"<<e.what()<<endl;cout<<"类型:"<<typeid(e).name()<<endl;}int m=3,n=5;vector< vector<int> > vvi(m,vector<int>(n));//二维vectorvvi.resize(m+3);vvi[1].assign(9,3);vvi[5].assign(4,5);print(vvi);}/*template <typename T>void show(T a[],int n);template <typename T>void show(const vector<T>& vt);*/


//print.h

//print.h#include <iostream>using namespace std;#ifndef print_fun#define print_funtemplate<typename T>///显示序列数据void print(T b,T e,char c=' '){bool isExit=false;while (b!=e){cout<<*b++<<c;isExit=true;}if(isExit) cout<<endl;}#endif