真爱无限的知识驿站

学习积累技术经验,提升自身能力

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<<"
异常:"<<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);
*/


linux下练习 c++ 序列容器的使用

code:

// sequence.cpp 
/*
序列式容器:vector,deque,list
插入:.insert(position,n,element), .insert(position,pos_begin,pos_end)
赋值:.assign(n,element), .assign(pos_begin,pos_end)
调整:.resize(n,element=value)
首尾:.front(),.back()
增删:.push_back(element), .pop_back()----删除,返回void
*/
#include <iostream>
#include <deque>
#include <string>
#include "print.h"
using namespace std;
int main()
{
deque<string> ds;
ds.push_back("zhang");//增加
ds.push_back("pu");
ds.push_back("yang");
ds.push_back("xie");
ds.insert(ds.begin()+1,1,"wang");//插入
string s1[3]={"liao","hu","liu"};
ds.insert(----ds.end(),s1,s1+3);
print(ds.begin(),ds.end(),',');
ds.pop_back(); //删除最后一个
ds.pop_back();
print(ds.begin(),ds.end(),',');
ds.resize(10,"pkm");//大小设为10,后面用pkm填充
print(ds.begin(),ds.end(),',');
ds.assign(5,"kkkkk");//5个,都为kkkkk
print(ds.begin(),ds.end(),',');
return 0;
}


linux下练习 c++ 普通容器的使用

code:

/*
迭代器
.begin(),.end() ,.rbegin() , .rend()
插入:.insert(position,element)
删除:.erase(position),.erase(pos_begin,pos_end)
清除:.clear()
大小:.size(), .max_size(), .empty()
交换:.swap(c2) , swap(c1,c2)
运算符:=,>,<,>=,<=,==,!=
*/
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#ifndef print_fun
#define print_fun
template<typename T>
///显示序列数据
void print(T b,T e)
{
bool isExit=false;
while (b!=e)
{
cout<<*b++<<' ';
isExit=true;
}
if(isExit) cout<<endl;
}
#endif
int main()
{
int a[5]={44,33,55,66,11};
vector<int> vi(a,a+5);//用数组初始化一个迭代器vi
cout<<vi.size()<<endl;
sort(vi.begin(),vi.end());//元素排序
vector<int>::iterator b= vi.begin();
print(vi.begin(),vi.end());//正向迭代器
print(a,a+5);
print(vi.rbegin(),vi.rend());//反向迭代器
vi.insert(vi.begin()+1,48);//插入到第2
vi.insert(vi.end(),49);//插入到最后
vi.insert(vi.end()-1,57);
print(vi.begin(),vi.end());
vi.erase(vi.end()-1);//删除最后一个
print(vi.begin(),vi.end());
vi.erase(vi.begin()+2,vi.end()-2);//删除一个区间
print(vi.begin(),vi.end());
vector<int> v2(a,a+5);
vi.swap(v2);//vi与v2交换
print(vi.begin(),vi.end());
vi.swap(v2);//vi再与v2交换回去 
print(vi.begin(),vi.end());
vi.clear();//清空容器
cout<<vi.size()<<endl;
return 0;
}


<< 1 >>

Powered By Z-BlogPHP 1.7.3

Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号