-2

我有一个类,如何将这个类的一个对象添加到映射中,并通过 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

Client使用 key=10添加一个:

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)“我怎样才能将这个类的一个对象添加到映射中?

ClientTable[id] = c;

好吧,从技术上讲,它会将对象的副本添加到地图中。

2)“并通过 id 找到它?

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