我有一个类,如何添加这个类的一个对象来映射,并通过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?
}
我尝试了很多示例代码但没有使用自定义类,因此它们无法正常工作。 谢谢!
答案 0 :(得分:1)
使用key = 10添加Client
:
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
。所以,如果你只是想找到一个元素,那很可能不是你想要使用的。
答案 1 :(得分:0)
1)“如何添加此类的一个对象来映射?”
ClientTable[id] = c;
从技术上讲,它会将对象的副本添加到地图中。
2)“并通过id找到它?”
Client lookerUpper = ClientTable[id];