//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));//二维vector vvi.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_fun template<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