如何插入自定义类项来映射C ++

时间:2012-06-05 19:09:28

标签: 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)
    {
        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?
}

我尝试了很多示例代码但没有使用自定义类,因此它们无法正常工作。 谢谢!

2 个答案:

答案 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];