linux下练习 c++ 容器的vector的特性
//vector.cpp/*vector的特性当前容量:.capacity()约定容量:.reserve()下标:.operator[](i) ,.at(i) 越界抛出异常*/#includeusing namespace std;#include#include#include#include "print.h"void print(con
·
//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
更多推荐
已为社区贡献2条内容
所有评论(0)