15
2012
10

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

//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

#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





版权声明:
作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »

相关文章:

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。