找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 344|回复: 5

请教自己写一个跌代器

[复制链接]
发表于 2009-11-3 04:19:01 | 显示全部楼层 |阅读模式 IP:江苏扬州
#include<iostream>
#include<algorithm>
using namespace std;
template<class T>
class Array
{
public:
T& operator[](int);
Array(int);
~Array();
int get_size() const{return size;}
private:
T* a;
int size;
Araay();
T dummy_val;
};
template<class T>
T& Array<T>::operator [](int i)
{
if(i<0 || i>=size)
{
cout<<"error"<<endl;
return dummy_val;
}
return a[i];
}
template<class T>
Array<T>::Array(int s)
{
a=new T[size=s];
}
template<class T>
Array<T>:: ~Array()
{
delete a;
}
template<class T>
ostream& operator<<(ostream& out,Array<T>& a)
{
for(int i=0;i<a.get_size();i++)
out<<a[i]<<" ";
out<<endl;
return out;
}
template<class T>
istream& operator>>(istream& in,Array<T>& a)
{
for(int i=0;i<a.get_size();i++)
in>>a[i];
return in;
}
template<class T>
class ForwardIterator
{
public:
ForwardIterator(Array<T>&);
bool hasMoreElements();
int nextElement();
private:
Array<T>* t;
};
template<class T>
ForwardIterator<T>::ForwardIterator(Array<T>& f)
{
t=f;
}
template<class T>
bool ForwardIterator<T>::hasMoreElements()
{
}
template<class T>
int ForwardIterator<T>::nextElement()
{
}
void main()
{
Array<int>f(10);
cin>>f;
ForwardIterator<int>fi(f);
//while(fi.hasMoreElements())
//cout<<fi.nextElement();
}

这里的hasMoreElements()方法和nextElement();方法怎么写呢?请指教!!!
发表于 2009-11-3 04:19:07 | 显示全部楼层 IP:江苏扬州
你好像搞反了一些东西,应该array里面返回的类型都是iterator才对吧
例如vector<int> vec; vec.begin();返回的就是iterator;
而iterator应该是 iterator<vector<int> >这个样子;
楼住上面的做法好象已经将array跟iterator分开了
回复

使用道具 举报

发表于 2009-11-3 04:19:10 | 显示全部楼层 IP:江苏扬州
能具体的指明吗?
Array<int>f(10);
cin>>f;
ForwardIterator<int>fi(f);
//while(fi.hasMoreElements())
//cout<<fi.nextElement();
这一段是书上的代码,就是要求自己写一个跌代器.....应该怎么个写法呢?
回复

使用道具 举报

发表于 2009-11-3 04:19:11 | 显示全部楼层 IP:江苏扬州
可以看下MSDN上的啊,上面详细写了array的函数啊
回复

使用道具 举报

发表于 2009-11-3 04:19:14 | 显示全部楼层 IP:江苏扬州
不过这样子写,没什么多大的意义了
template<class T>
class ForwardIterator
{
public:
ForwardIterator(Array<T>&);
bool hasMoreElements();
int nextElement();
private:
Array<T>* t;
int size;
int now;
};
template<class T>
ForwardIterator<T>::ForwardIterator(Array<T>& f)
{
size=f.get_size() ;
now=0;
t=f;
}
template<class T>
bool ForwardIterator<T>::hasMoreElements()
{
if(now<size)
return ture;
return false;
}
template<class T>
int ForwardIterator<T>::nextElement()
{
now++;
return t[now];
}
回复

使用道具 举报

发表于 2009-11-3 04:19:15 | 显示全部楼层 IP:江苏扬州
我也搞不清楚,所以来请教大家!!!集思广益!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 17:39 , Processed in 0.198439 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表