gpt4 book ai didi

c++ - 将堆栈参数放入 map ?

转载 作者:行者123 更新时间:2023-11-28 05:53:04 26 4
gpt4 key购买 nike

我在 CCArmatureDataManager.cpp 253 行查看此代码。 RelativeData 是一个结构。在这里,将堆栈参数放入映射中。为什么,没问题??有人给我解释一下吗?谢谢!!!

struct RelativeData
{
std::vector<std::string> plistFiles;
std::vector<std::string> armatures;
std::vector<std::string> animations;
std::vector<std::string> textures;
};

void CCArmatureDataManager::addRelativeData(const std::string& configFilePath)
{
if (_relativeDatas.find(configFilePath) == _relativeDatas.end())
{
_relativeDatas[configFilePath] = RelativeData();
}
}

最佳答案

在表达式中

_relativeDatas[configFilePath] = RelativeData()

RelativeData() 部分创建一个临时的默认构造对象。

_relativeDatas[configFilePath] 部分调用 std::map::operator[]它返回一个对象的引用

赋值从临时对象复制[] 运算符返回其引用的对象。换句话说,RelativeData copy assignment operator被调用(如果您没有,编译器在大多数情况下会为您创建一个)。

如果不存在键为 configFilePath 的元素,则映射将默认构造一个,并返回对它的引用。

因此您的代码所做的是创建两个 RelativeData 类型的默认构造对象,并将内容从一个复制到另一个。用可能不太客气的话来说,它几乎没用。

关于c++ - 将堆栈参数放入 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34806607/

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