对stackt中的每一个对象调用某个方法,stackt采用模板进行定义

翻译 2013年12月04日 18:55:00

1. stackT.h

#ifndef STACKT_H_
#define STACKT_H_

template<class T> class stackIter;

template<class T>
class stackt
{
	enum{ssize = 100};
	T stack[ssize];
	int top;
public:
	stackt() : top(0)
	{
		stack[top] = 0;
	}
	void push(const T& i)
	{
		if(top < ssize)
		{
			stack[top++] = i;
		}
	}

	T pop()
	{
		return stack[top > 0 ? --top : top];
	}

	friend class stackIter<T>;
};

template<class T>
class stackIter
{
	stackt<T>& S;
	int index;
public:
	stackIter(stackt<T>& is) : S(is), index(0){}
	T& operator++()
	{
		if (index < S.top - 1)
		{
			index++;
		}
		return S.stack[index];
	}
	T& operator++(int)
	{
		int returnIndex = index;
		if (index < S.top - 1)
		{
			index++;
		}
		return S.stack[returnIndex];
	}
};

#endif

2. main.cpp


#include "stackT.h"
#include <iostream>
using namespace std;

template<class T, class R>
void applist(stackt<T>& t1, R (T::*f)(), int size)
{
	stackIter<T> it(t1);
	for (int i = 0; i < size; i++)
	{
		T& t = it++;
		(t.*f)();
	}
}

template<class T, class R, class A1, class A2>
void applist(stackt<T>& t1, R (T::*f)(A1, A2), A1 a1, A2 a2, int sz)
{
	stackIter<T> it(t1);
	for (int i = 0; i < sz; i++)
	{
		T& t = it++;
		(t.*f)(a1, a2);
	}
}

class gromit
{
	int arf;
public:
	gromit(int Arf = 1) : arf(Arf + 1){}
	void speek()
	{
		cout << "speek() : " << arf << endl;
	}
	int sleep(char, double)
	{
		cout << "zzz..." << endl;
		return 0;
	}
};

int main()
{
	stackt<gromit> dogs;
	const int sz = 5;

	for (int i = 0; i < sz; i++)
	{
		dogs.push(*new gromit(i));
	}

	applist(dogs, &gromit::speek, sz);
	applist(dogs, &gromit::sleep, 'z', 3.0, sz);

	system("pause");
	return 1;
}


自定义Adapter并通过布局泵LayoutInflater抓取layout模板编辑每一个item

写在前面的话:          看到标题这么长可能大家有点抓狂了,是的,我在刚刚学这一篇的时候有一些不理解,什么是布局泵?编辑每一个模板然后什么是自定义Adapter?下面我们开始学习这一篇的内容...

iOS利用runtime追踪对象的每一个方法

利用runtime追踪对象的每一个方法 我们会用到runtime替换方法来监听某个方法的调用。例如,项目中每个Controller都直接继承了UIViewController,但是现在想监听每个Co...

storm的ack和fail为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪, 这里面涉及到ack/fail的处理, 如果一个tuple处理成功, 会调用s

出处:http://macrochen.iteye.com/blog/1414568 为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪, 这里面涉及到ack...

struts2 配合jaxl 制作Excel模板做的报表[云少原创](有了它就不需要每一个单元格都要一个一个敲代码了哈哈)

一早上,刚刚把第二张表格模板做好了,我感觉这2天的辛苦没有白费,现在要是想做一个导出报表的事情只需要从数据库里面拿出数据然后将他们组装成一个DataModel这个对象就可以了,我一边说一边把代码拷贝出...

Struts 2中如何用一个action调用多个方法,避免每一个方法写一个action的繁琐之处

================================================这个是打开首页的一个jsp页面=====================================...

第七周上机任务三--实现一个复数类--通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生  * All rights reserved. * 文件名称:实现...

将整数数组进行m等分,使得每一个部分的和相等且m最大

我对这个问题的解法是递归着解决的,首先对原始数组进行排序,然后我们首先选择m的大小,注意这里题目没有说明是否是正整数,如果是:那么最大的m一定小于(数组的和)/(数组最大的元素),否则就要从数组的元素...

opencv中遍历每一个像素点进行处理

有时候我们需要遍历Mat中的每一个像素点,并且对像素点进行处理,这里以图像所有像素点都减去div(div属于int类型) void colorReduce(Mat& inputImage, Mat& ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对stackt中的每一个对象调用某个方法,stackt采用模板进行定义
举报原因:
原因补充:

(最多只允许输入30个字)