-2

クラスがあります。このクラスの 1 つのオブジェクトをマップに追加し、ID で検索するにはどうすればよいですか?

クラスコード:

class Client {
    int FileDescriptor, Id, cryptcode;
    unsigned char CustomData[256];

    void PrepareClient()
    {
        // init code
    }
  public:
    AnticheatClient (int fd, int id, int crypt_code)
    {
        FileDescriptor = fd;
        Id = id;
        cryptcode = crypt_code;
        PrepareCrypt();
    }

    void OwnCryptEncrypt(unsigned char* data, int len)
    {
 //...
    }

    void OwnCryptDecrypt(unsigned char* data, int len)
    {
 //...
    }
};

std::map<int, Client> ClientTable;

int main()
{
 int id = 1;
 Client c(1, id, 1);
 // how can i add this client to map and how can i find it by id?
}

非常に多くのサンプル コードを試しましたが、カスタム クラスを使用しなかったため、機能しませんでした。ありがとう!

4

2 に答える 2

1

Clientkey=10 でa を追加する場合:

ClientTable[10] = Client(1, id, 1);

key=10 の要素を検索するには:

std::map<int, Client>::iterator it = ClientTable.find(10);
if (it != ClientTable.end()) {
    int key = it->first;
    Client c = it->second;
}

以下も使用できます。

Client c = ClientTable[10];

ですが呼び出しoperator[]はありませんconst。したがって、要素を見つけたいだけの場合は、おそらくこれを使用したくないでしょう。

于 2012-06-05T19:13:36.177 に答える
0

1) 「このクラスの 1 つのオブジェクトをマップに追加するにはどうすればよいですか?

ClientTable[id] = c;

技術的には、オブジェクトのコピーをマップに追加します。

2) " ID で検索しますか? "

Client lookerUpper = ClientTable[id];
于 2012-06-05T19:11:53.357 に答える