linux下的hash_map的使用问题

xiaoxiaospace 2012-08-07 02:11:46
我写了个模版,代码如下:


#include <ext/hash_map>
#include <iterator>
#define HASHMAP_PREFIX __gnu_cxx

using namespace std;
using namespace HASHMAP_PREFIX;




template<typename Key, typename Value>
class CHashMapTemp
{
public:
CHashMapTemp(){}
~CHashMapTemp(){}

Value Find(Key k)
{
//********* 问题所在
HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);//问题就出在这行

return (Value)NULL;

}

private:
protected:
HASHMAP_PREFIX::hash_map<Key, Value> m_HashMap;
};



程序始终编译不过去,,如果我标准的那行改成
m_HashMap.find(k)
就可以编译过去。


可是这个代码在WINDOWS下可以编译过去,LINUX下怎么也编译不过去,,到底怎么回事????
...全文
768 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiaospace 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
加typename试试,防止iterator被当成静态变量了
[/Quote]

搞定。。。方法很对。
HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);

改成:
typename HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);
就可以编译过了
昵称很不好取 2012-08-21
  • 打赏
  • 举报
回复
加typename试试,防止iterator被当成静态变量了
xiaoxiaospace 2012-08-21
  • 打赏
  • 举报
回复
报错信息如下:
HashMapTemp.h: In member function `Value CHashMapTemp<Key, Value>::Find(Key)':
HashMapTemp.h:59: error: expected `;' before "it"
HashMapTemp.h:60: error: `it' undeclared (first use this function)
HashMapTemp.h:60: error: (Each undeclared identifier is reported only once for each function it appears in.)


说的就是Find函数的那行代码。。。。。。

我的系统是32位,,G++版本是3.4.4
Miss_Zhao 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
//********* 问题所在
HASHMAP_PREFIX::hash_map<Key, Value>::iterator it = m_HashMap.find(k);//问题就出在这行
[/Quote]

如果编译不通过,具体报错信息是?

第二,请给出你使用 g++ version ,电脑64位吗?
寻找自我 2012-08-07
  • 打赏
  • 举报
回复
好像是没有这个,得自己实现。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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