关于类中容器迭代器初始话问题,求教,在线等

豆先生 2014-11-23 11:50:27

class EventQueue
{
private:
map<long double,Event*> m;
public:
map<long double,Event*>::iterator eq_it;
public:
void addEqueue(Event *e);
void removeEqueue(Event *e);
bool emptyEqueue();
};


请问大神map容器的迭代器eq_it怎么初始化为m.begin();
我本想在EentQueue()构造函数中初始化:eq_it = m.begin();但是编译有错,随取消了构造函数的定义,但是迭代器eq_it终究不知道该如何初始化,急,在线等。。
...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆先生 2014-11-30
  • 打赏
  • 举报
回复
引用 7 楼 starytx 的回复:
如果在构造中不行的话,可以封装在一个函数中,比如init(),最好不要定义成public,尤其是非const迭代器,万一外界改变了你的值怎么办
嗯嗯,有道理!!
starytx 2014-11-24
  • 打赏
  • 举报
回复
如果在构造中不行的话,可以封装在一个函数中,比如init(),最好不要定义成public,尤其是非const迭代器,万一外界改变了你的值怎么办
豆先生 2014-11-24
  • 打赏
  • 举报
回复
问题已解决,感觉容器的迭代器不应该在构造函数中初始化,应该将其设置为public,然后在哪用就在哪初始化,不然总会出问题,一点拙见,不妥之处往指教。。
豆先生 2014-11-23
  • 打赏
  • 举报
回复
引用 2 楼 scy2510 的回复:
我能编过,你提到的编译错误是不是其它地方的问题

#include "stdafx.h"
#include <map>
typedef struct
{
	int x;
}Event;
class EventQueue
{
private:
	map<long double,Event*> m;
public:
	map<long double,Event*>::iterator eq_it;
public:
	void addEqueue(Event *e);
	void removeEqueue(Event *e);
	bool emptyEqueue();
	EventQueue();

};


EventQueue::EventQueue()
{
	eq_it = m.begin();	
}
我编译后提示:错误: 隐式声明的‘EventQueue::EventQueue()’的定义,也不清楚啥意思,但取消定义就好了。。
豆先生 2014-11-23
  • 打赏
  • 举报
回复
引用 1 楼 FancyMouse 的回复:
你为什么要把这iterator弄成成员?
对哦,我把它定义为全局怎么样,map也定义为全局,然后EventQueue对map维持一个对象引用,如何?
scy2510 2014-11-23
  • 打赏
  • 举报
回复
我能编过,你提到的编译错误是不是其它地方的问题

#include "stdafx.h"
#include <map>
typedef struct
{
	int x;
}Event;
class EventQueue
{
private:
	map<long double,Event*> m;
public:
	map<long double,Event*>::iterator eq_it;
public:
	void addEqueue(Event *e);
	void removeEqueue(Event *e);
	bool emptyEqueue();
	EventQueue();

};


EventQueue::EventQueue()
{
	eq_it = m.begin();	
}
FancyMouse 2014-11-23
  • 打赏
  • 举报
回复
你为什么要把这iterator弄成成员?
scy2510 2014-11-23
  • 打赏
  • 举报
回复
把对象EventQueue实例化的代码和你定义的构造函数头代码贴来看下

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧