-2

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

}

我的代码有什么问题?

谢谢!

4

1 回答 1

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);
    }
}
于 2012-06-03T20:56:42.213 回答