Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将自定义类项插入到映射C++;_C++_Map_Iterator - Fatal编程技术网

C++ 如何将自定义类项插入到映射C++;

C++ 如何将自定义类项插入到映射C++;,c++,map,iterator,C++,Map,Iterator,我有一个类,如何将这个类的一个对象添加到映射中,并通过id找到它 类别代码: class Client { int FileDescriptor, Id, cryptcode; unsigned char CustomData[256]; void PrepareClient() { // init code } public: AnticheatClient (int fd, int id, int crypt_code)

我有一个类,如何将这个类的一个对象添加到映射中,并通过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?
}
类客户端{
int FileDescriptor,Id,密码;
无符号字符自定义数据[256];
void PrepareClient()
{
//初始化代码
}
公众:
AnticheatClient(int-fd、int-id、int-crypt_代码)
{
FileDescriptor=fd;
Id=Id;
密码=密码;
PrepareCrypt();
}
void OwnCryptEncrypt(无符号字符*数据,整数长度)
{
//...
}
void OwnCryptDecrypt(无符号字符*数据,整数len)
{
//...
}
};
std::map ClientTable;
int main()
{
int-id=1;
客户c(1,id,1);
//如何将此客户端添加到地图,以及如何通过id查找它?
}
我尝试了很多示例代码,但没有使用自定义类,所以它们不起作用。 谢谢

1)“如何将此类的一个对象添加到地图?”

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

2) “凭身份证找到吗?”


对于添加键为10的
客户端

ClientTable[10] = Client(1, id, 1);
std::map<int, Client>::iterator it = ClientTable.find(10);
if (it != ClientTable.end()) {
    int key = it->first;
    Client c = it->second;
}
对于查找键为10的元素:

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

但是调用
操作符[]
不是
const
。因此,如果您只是想找到一个元素,那么这很可能不是您想要使用的。

您所说的“它们不起作用”是什么意思?要获得良好的同行评议学习资源,请查看我们的“请复制粘贴您的错误消息”。还有您在main中尝试的代码。
Client c = ClientTable[10];