gpt4 book ai didi

c++ - 如何将 std::set 放入 std::map

转载 作者:行者123 更新时间:2023-11-28 00:53:25 24 4
gpt4 key购买 nike

我在下面声明了 std: map:

std::map<std::string, std::set<unsigned char*>> FilesMap;

int InsertData(unsigned char* name)
{
// here i try to insert pair with name above and clear std::set
FilesMap.insert(std::pair<std::string, std::set<unsigned char*>>(std::string((char*)name), std::set<unsigned char*>()));
}

但是我有很多错误,比如:

Error 16 error C2676: binary '<': 'const std::string' does not define this operator or a conversion to a type acceptable to the predefined operator c: \program files (x86)\microsoft Visual Studio 10.0\vc\include\xfunctional

我做错了什么?

最佳答案

首先,这条可怕的长线

FilesMap.insert(std::pair<std::string, std::set<unsigned char*>>(std::string((char*)name), std::set<unsigned char*>()));

如果使用 std::make_pair 函数可以简化,它将推导模板参数。

FilesMap.insert(std::make_pair(std::string(reinterpret_cast<char*>name)), std::set<unsigned char*>()));

其次,您可以为您的集合创建一个 typedef,以进一步简化上面的行

typedef std::set<unsigned char*> mySetType;
std::map<std::string, mySetType>> FilesMap;
FilesMap.insert(std::make_pair(std::string(reinterpret_cast<char*>name)), MySetType()));

最后,也是最重要的,我相信编译器无法找到合适的 operator < 的原因。对于 std::string 是你忘记了 #include<string>

关于c++ - 如何将 std::set 放入 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com