gpt4 book ai didi

c++ - 带有自定义类的 Unordered_map

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:47 25 4
gpt4 key购买 nike

我是新来的,这是我的第一个问题..(我在浏览这个网站时找到了我的问题的一些答案,但我不明白它们的意思,因为我的有点不同。)让我先给你看一些代码:所以这是我的课:

class citems{
public:
char* name;
int colorR;
int colorG;
int colorB;
int type;

citems(char* name, int colorR, int colorG, int colorB, int type)
{
this->name = name;
this->colorR = colorR;
this->colorG = colorG;
this->colorB = colorB;
this->type = type;
}
};

然后我会创建一个函数来执行此操作,但列表很长:

citems getObjectFromId(int ID)
{
static unordered_map <int, citems> item;
static bool init = false;
if (!init)
{
item[123546]= citems("Name", 181,179, 0, 9);
init = true;
}
return item[ID];
}

所以我可以随时调用项目 ID 作为返回获取单独的颜色、类型和名称。到目前为止一切正常,但是当我编译时出现此错误:

c:\program files (x86)\microsoft visual studio 11.0\vc\include\unordered_map(239): error C2228: left of '.first' must have class/struct/union

所以我读到我必须制作自己的 EqualOperator 或类似的东西,但我似乎无法从中获得逻辑。提前致谢。

最佳答案

对于 T& operator[]( const Key& key ) 映射类型必须满足 DefaultConstructible要求。这意味着您的类引用需要一个默认构造函数:

class citems{
public:
//...

/* possible form 1 */
citems() {
}

/* possible form 2 ( default parameter values)*/
citems( char* name = 0, int colorR = -1, int colorG = -1,
int colorB = -1, int type = -1) {
}
};

另请注意,T& operator[]( const Key& key ) 返回对映射到等效于 key 的键的值的引用,如果此类键尚不存在,则执行插入。如果您不想在 map 中没有给定键时插入新元素,而是要更改现有键 - 您必须首先使用 find() 或插入来检查 map 上是否存在此类元素插入()

关于c++ - 带有自定义类的 Unordered_map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502813/

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