当前位置: 技术问答>linux和unix
linux 下使用set,map问题 急!
来源: 互联网 发布时间:2016-11-22
本文导语: 我写了一个资源池类,使用了模板类;资源池的内存使用map来管理,空闲的用set来记录; 大体就是(部分代码): template class CResPool { typedef map ResNodeMap; private: ResNodeMap m_resNodeMap; // 资源池内存 set m_spar...
我写了一个资源池类,使用了模板类;资源池的内存使用map来管理,空闲的用set来记录;
大体就是(部分代码):
template
class CResPool
{
typedef map ResNodeMap;
private:
ResNodeMap m_resNodeMap; // 资源池内存
set m_sparePool; // 空闲的资源
public:
// 从资源池中通过key查找一个资源
VALUE* Find(KEY& key)
{
set::iterator setitor = m_sparePool.find(key);
if (setitor!=m_sparePool.end())
return NULL;
map::iterator itor = m_resNodeMap.find(key);
if (itor != m_resNodeMap.end())
return itor->second;
return NULL;
}
}
编译的时候Find函数中的set::iterator setitor 不能编译通过,说set::iterator不是有效的类型吧;
这个是什么原因呢,我在windows上面使用都没有问题的,但linux上有问题;
请高手帮忙啊,很急!
大体就是(部分代码):
template
class CResPool
{
typedef map ResNodeMap;
private:
ResNodeMap m_resNodeMap; // 资源池内存
set m_sparePool; // 空闲的资源
public:
// 从资源池中通过key查找一个资源
VALUE* Find(KEY& key)
{
set::iterator setitor = m_sparePool.find(key);
if (setitor!=m_sparePool.end())
return NULL;
map::iterator itor = m_resNodeMap.find(key);
if (itor != m_resNodeMap.end())
return itor->second;
return NULL;
}
}
编译的时候Find函数中的set::iterator setitor 不能编译通过,说set::iterator不是有效的类型吧;
这个是什么原因呢,我在windows上面使用都没有问题的,但linux上有问题;
请高手帮忙啊,很急!
|
#include
#include
#include
using namespace std;
set::iterator setitor ;
main(){}
这样是可以编译通过的
g++ test.cpp
#include
#include
using namespace std;
set::iterator setitor ;
main(){}
这样是可以编译通过的
g++ test.cpp
|
你少了
using namespace std;
当然最好是写成
std::set
using namespace std;
当然最好是写成
std::set