C ++ Map不适合我

时间:2012-06-03 20:51:01

标签: c++ map file-descriptor

我遇到了问题,我有一个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
 }

}

我的代码出了什么问题?

谢谢!

1 个答案:

答案 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);
    }
}