我遇到了问题,我有一个map
我要存储数据。我添加了对映射,但当我试图得到它 - 它没有存储它的数据。我的代码:
typedef std::map<unsigned long, int> SocketsTableType;
SocketsTableType ClientTable;
inline void AddClient(unsigned long id, int fd)
{
ClientTable.insert(std::pair<unsigned long, int>(id, fd));
}
inline int GetDescriptorByClient(unsigned long id)
{
SocketsTableType::const_iterator it;
for (it = ClientTable.begin(); it != ClientTable.end(); ++it)
{
if (it->first == id)
{
return it->second;
}
}
return 0;
}
int main()
{
AddClient(223322, 12);
int fd = GetDescriptorByClient(223322);
if(fd >= 0)
{
// NEVER HERE
}
}
我的代码出了什么问题?
谢谢!
答案 0 :(得分:2)
您的代码中有错误。它甚至不会编译。任何地方都没有声明addClient
函数。此外,您忘记包含必要的头文件。好吧,下面的程序就像一个魅力:
#include <map>
#include <cstdio>
typedef std::map<unsigned long, int> SocketsTableType;
SocketsTableType ClientTable;
inline void AddClient(unsigned long id, int fd)
{
ClientTable.insert(std::pair<unsigned long, int>(id, fd));
}
inline int GetDescriptorByClient(unsigned long id)
{
SocketsTableType::const_iterator it;
for (it = ClientTable.begin(); it != ClientTable.end(); ++it)
{
if (it->first == id)
{
return it->second;
}
}
return 0;
}
int main()
{
AddClient(223322, 12);
int fd = GetDescriptorByClient(223322);
if(fd >= 0)
{
printf("Found it! FD=%d\n", fd);
}
}