将堆栈参数放入地图



我在CCArmatureDataManager.cpp 253行查看此代码。相对数据是一个结构体。在这里,将堆栈参数放入地图中。为什么,没问题??有人向我解释吗?感谢!!!

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复制赋值运算符(在大多数情况下,如果您没有编译器,编译器将为您创建一个)。

如果没有带有键configFilePath的元素,则映射将默认构造一个元素,并返回对它的引用。

因此,您的代码所做的是创建两个默认构造的 RelativeData 类型的对象,并将内容从一个复制到另一个。用也许不是那么好的话来说,它几乎毫无用处。

看起来该函数只是在_relativeDatas映射中添加了一个空结构(如果还没有的话)一个空结构(它看起来是一个 std::map <std::String> ),然后可以用数据填充

最新更新