免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2389 | 回复: 12
打印 上一主题 下一主题

iterator 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-30 06:49 |只看该作者 |倒序浏览
iterator 一定要与 template 一起用吗?谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-03-30 06:58 |只看该作者
class Array {
public:
  typedef int *iterator;
  ...
private:
  int array_[ARRAYSIZE];
}

论坛徽章:
0
3 [报告]
发表于 2006-03-30 17:04 |只看该作者
一直都用typename T::iterator....typename当然是要和template一起用,其它的方法没有见过,关注回贴..

论坛徽章:
0
4 [报告]
发表于 2006-03-30 17:32 |只看该作者
不一定...如果你用的STL的东西的话那么答案是肯定的,但是如果你自己写一个容器的实现的话如wolf兄那样的话就可以不必了.
其实iterator只是一个typename罢了.

论坛徽章:
0
5 [报告]
发表于 2006-03-30 18:56 |只看该作者
iterator 甚至未必是一个 typename。。。STL 讲究的是 Concept。广义上理解,甚至操作数据库返回记录的 cursor,操作内存的指针,都可以认为是 STL 概念中 iterator 的表现。

论坛徽章:
0
6 [报告]
发表于 2006-03-30 18:59 |只看该作者
原帖由 wolf0403 于 2006-3-30 18:56 发表
iterator 甚至未必是一个 typename。。。STL 讲究的是 Concept。广义上理解,甚至操作数据库返回记录的 cursor,操作内存的指针,都可以认为是 STL 概念中 iterator 的表现。


受教~~

论坛徽章:
0
7 [报告]
发表于 2006-03-31 13:11 |只看该作者

friend declaration does not name a class or function

谢谢!可是这段程序错在哪儿呢?

  1. #ifndef _MYNODE_H
  2. #define _MYNODE_H

  3. class mylist;
  4. class mynode {
  5.   friend class mylist;
  6.   friend class mylist::iterator;
  7. public:
  8.   mynode() : nodeValue(0),prev(0),next(0) {};
  9.   mynode(const int &value) : nodeValue(value),prev(0),next(0){};
  10. private:
  11.   int nodeValue;
  12.   mynode *prev;
  13.   mynode *next;
  14. };

  15. #endif
复制代码

mynode.h:7: error: friend declaration does not name a class or function

论坛徽章:
0
8 [报告]
发表于 2006-03-31 14:43 |只看该作者
friend class mylist::iterator;

这个类型的声明在之前存在吗?

论坛徽章:
0
9 [报告]
发表于 2006-03-31 21:25 |只看该作者
原帖由 wolf0403 于 2006-3-31 01:43 发表
friend class mylist::iterator;

这个类型的声明在之前存在吗?


在另外的文件中定义。当mylist是template的时候是允许的,比如:
  friend class mylist<T>::iterator;

所以才有前面的疑问。
谢谢帮助。

论坛徽章:
0
10 [报告]
发表于 2006-04-01 02:57 |只看该作者
你的mylist是模板类?那你就只能这么写了:friend class mylist<mynode>::iterator;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP