免费注册 查看新帖 |

Chinaunix

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

请教迭代器的一个问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-17 20:32 |只看该作者 |倒序浏览
下面的片段在for(Data::iterator p=stats.begin();p!=stats.end();++p
出了两个问题
一是:'initializing' : cannot convert from 'class std::_Tree.......
二是:binary '!=' : no operator defined which takes a right-hand operand of type
'class......
该如何改正?请指教~
程序如下:
struct stat_get
{
        stat_get():sum(0.0),count(0){}
        float sum;int count;
};
typedef map<string,stat_get>;Data;
void print_data(Data const &stats)
{
for(Data::iterator p=stats.begin();p!=stats.end();++p
{
cout<<(*p).first<<'\n'<<"sum is"<<(*p).second.sum<<'\n';
........
}....

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-11-17 22:32 |只看该作者

请教迭代器的一个问题!

Data::iterator p=stats.begin();
你的p是非const的iterator,而stats是const对象.怎么把const对象的迭代器赋给非const的iterator呢?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-11-17 22:37 |只看该作者

请教迭代器的一个问题!

  1. #include <iostream>;
  2. #include <map>;
  3. #include <string>;
  4. using namespace std;
  5. struct stat_get
  6. {
  7.   stat_get():sum(0.0),count(0){}
  8.   float sum;
  9.   int count;
  10. };
  11. typedef map<string,stat_get>;Data;
  12. void print_data(Data const &stats)
  13. {
  14.   for(Data::const_iterator p=stats.begin();p!=stats.end();++p  )
  15.   {
  16.     cout<<(*p).first<<'\n'<<"sum is"<<(*p).second.sum<<'\n';
  17.   }
  18. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-11-17 22:49 |只看该作者

请教迭代器的一个问题!

  1. #include <iostream>;
  2. #include <map>;

  3. using namespace std;

  4. struct stat_get
  5. {
  6.    stat_get():sum(0.0),count(0){}
  7.    float sum;
  8.    int count;
  9. };

  10. typedef map <string,stat_get>; Data;
  11. typedef map <string,stat_get>;::const_iterator DataIt;
  12. void print_data( const Data &stats )
  13. {
  14.    
  15.    for( DataIt p = stats.begin(); p!=stats.end(); p++ )
  16.    {
  17.       cout<<(*p).first<<'\n'<<"sum is "<<(*p).second.sum<<'\n';
  18.    }
  19. }

  20. int main ( int argc, char *argv[] )
  21. {
  22.    Data m;
  23.    stat_get s;
  24.    m["hello"] = s;
  25.    
  26.    print_data ( m );
  27.    return 0;
  28. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2004-11-18 10:33 |只看该作者

请教迭代器的一个问题!

这个帖子好像发过了吧?似曾相识,好像我还说叫你自己改进呐,结果~~~;方法就是上面两位说的,用const_iterator,或者直接用void print_data(Data &stats )因为一般书上讲map的时候好像没加const;
还有就是用iterator的时候,最好把begin和end都赋值给变量,不然每次都用p!=stats.end();对于大型的map会增加开销。

论坛徽章:
0
6 [报告]
发表于 2004-11-18 10:41 |只看该作者

请教迭代器的一个问题!

楼主应该把错误的提示贴全了。
然后再仔细看一看。
这种问题其实光看提示就应该能解决的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP