-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 に答える