大挪耗

c++嵌套使用模板类

#include “iostream”
using namespace std;

template <class T>
class Vector
{
private:
int len;
T* items;
public:
Vector(int size=3):len(size)
{
items=new T[len];
}
~Vector()
{
delete items;items= nullptr;
}
Vector& operator=(const Vector&v)
{
delete[]items;//释放原内存
len=v.len;//数组实际的大小
items=new T[len];//重新分配数组
for (int ii = 0; ii < len; ++ii)items[ii]=v.items[ii];
return *this;
}
void resize(int size)
{
if(size<=len)return;
T* tmp=new T[size];
for (int ii = 0; ii < len; ++ii) tmp[ii]=items[ii];
delete[] items;
items =tmp;
len =size;
}
int size()const{return len;}
T& operator[](int ii){
if (ii>=len)resize(ii+1);
return items[ii];
}
const T& operator[](int ii)const{return items[ii];}
};

template <class DataType>
class Stack//栈类
{
private:
DataType *items;//栈数组
int stacksizs; //栈的实际大小
int top;//栈顶指针。
public:
//构造函数:1)分配数组函内存;2)把栈顶指针初始化为0.
Stack(int size=3) : stacksizs(size), top(0) {
items = new DataType[stacksizs];
}

~Stack() {
delete items;
items = nullptr;
}

Stack&operator=(const Stack&v)
{
delete[]items;
stacksizs=v.stacksizs;
items=new DataType[stacksizs];
for (int ii = 0; ii < stacksizs; ++ii)
items[ii]=v.items[ii];
top=v.top;
return *this;
}

bool isempty() const {//判断栈是否为空。
return top == 0;
}

bool isfull() const {
//判断栈是否已满
return top == stacksizs;
}

bool push(const DataType &item) {
//元素入栈
if (top < stacksizs) {
items[top++] = item;
return true;
}
return false;
}

bool pop(DataType &item) {
//元素出栈。
if (top > 0) {
item = items[–top];
return true;
}
return false;
}
};

int main(){
Vector<Stack<string>> vs;//c++11.>>前要加空格
vs[0].push(“西施1”);vs[0].push(“西施2”);vs[0].push(“西施3”);//vs容器的第0个。
vs[1].push(“西施1”);vs[1].push(“西施2”);vs[1].push(“西施3”);//vs容器的第1个。
vs[2].push(“西施1”);vs[2].push(“西施2”);vs[2].push(“西施3”);//vs容器的第2个。
//用嵌套的循环,把容器中的数据显示出来
for (int ii = 0; ii < vs.size(); ++ii) {
while(vs[ii].isempty()== false)
{
string items;
vs[ii].pop(items);
cout<<“item=”<<items<<endl;
}
}
Stack<Vector<string>> sv;
Vector<string> tmp;
tmp[0]=”西施”;tmp[1]=”西施2″;sv.push(tmp);
tmp[0]=”西瓜1″;tmp[1]=”西施2″;sv.push(tmp);
tmp[0]=”冰冰1″;tmp[1]=”冰冰2″;tmp[2]=”冰冰3″;tmp[3]=”冰冰4″;sv.push(tmp);
//用嵌套的循环,把sv容器的数据显示出来
while(sv.isempty()==false)
{
sv.pop(tmp);//出栈一个元素,放在临时容器中。
for(int ii=0;ii<tmp.size();ii++)
cout<<“vt[“<<ii<<“]=”<<tmp[ii]<<endl;
}
//创建Vector,容器的元素用Vector<string>.
Vector<Vector<string>>vv;
vv[0][0]=”西施1″;vv[0][1]=”西施2″;vv[0][2]=”西施3″;
vv[1][0]=”西瓜1″;vv[1][1]=”西瓜2″;
vv[2][0]=”冰冰1″;vv[2][1]=”冰冰2″;vv[2][2]=”冰冰3″;vv[2][3]=”冰冰4″;
//用嵌套的循环,把vv容器中的数据显示出来
for (int ii = 0; ii < vv.size(); ++ii) {
for (int jj = 0; jj < vv[ii].size(); ++jj) {
cout<<“vv[“<<ii<<“][“<<jj<<“]=”<<vv[ii][jj]<<endl;
//cout<<vv[ii][jj]<<“”;
//cout<<endl;
}
}

}

输出:

item=西施3
item=西施2
item=西施1
item=西施3
item=西施2
item=西施1
item=西施3
item=西施2
item=西施1
vt[0]=冰冰1
vt[1]=冰冰2
vt[2]=冰冰3
vt[3]=冰冰4
vt[0]=西瓜1
vt[1]=西施2
vt[2]=
vt[0]=西施
vt[1]=西施2
vt[2]=
vv[0][0]=西施1
vv[0][1]=西施2
vv[0][2]=西施3
vv[1][0]=西瓜1
vv[1][1]=西瓜2
vv[1][2]=
vv[2][0]=冰冰1
vv[2][1]=冰冰2
vv[2][2]=冰冰3
vv[2][3]=冰冰4


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注