lua 数组转换为 c++ 数组

 local pricetagColors = {
    [3242] = {255, 0, 255},
    [6712] = {255, 255, 0}
 }

 function getPricetagColor(itemnumber)
    local r, g, b = 0, 0, 0

    if pricetagColors[itemnumber] then
        r, g, b = pricetagColors[itemnumber][1], pricetagColors[itemnumber][2], pricetagColors[itemnumber[3]
    end

    return {r, g, b}
 end

好的,我现在正在逐步学习 C++。 现在我正在试图弄清楚 C++ 中的(复杂的?)数组是如何创建的。 由于我不知道如何用其他方式解释它,所以我使用了我最熟悉的 LUA。 函数并不是重要的事情,重要的是数组,因为我已经搜索了几个小时了,但是我无法弄清楚如何在 C++ 中完成你在 LUA 中看到的数组。

点赞
用户5737185
用户5737185

欢迎来到 C++,基本上我认为可以通过使用 C++ 的 MAP 功能来实现。也可以使用 Multi-Map。

示例代码可能像这样:(只是为了理解 @D 的思维方式并在你的例子中进行关联)

eg:

输入:

//声明 Map

std::map <int, std::string> stdBindList;
std::map <int, std::string>::iterator pos;

//添加元素

stdBindList.insert (std::pair<int,std::string>(15,"a")); // 1
stdBindList.insert (std::pair<int,std::string>(22,"b")); // 2
stdBindList.insert (std::pair<int,std::string>(12,"c")); // 3
stdBindList.insert (std::pair<int,std::string>(15,"d")); // 4
stdBindList.insert (std::pair<int,std::string>(5,"e")); // 5
stdBindList.insert (std::pair<int,std::string>(5,"f")); // 6
stdBindList.insert (std::pair<int,std::string>(2,"g")); // 7

stdBindList.insert (std::pair<int,std::string>(5,"h")); // 8
stdBindList.insert (std::pair<int,std::string>(5,"i")); // 9

//遍历并打印

for (pos = stdBindList.begin();pos!=stdBindList.end();pos++)
{

}

输出:

+–g
|  2
+–e
|  5
+–c
|  12
+–a
|  15
+–b
|  22
2016-03-19 03:07:53
用户2554810
用户2554810

看起来你在问题中所使用的等价于 std::map<int, std::array<int, 3>>

std::map<int, std::array<int, 3>> pricetagColors;
pricetagColors[3242] = {255, 0, 255};
pricetagColors[6712] = {255, 255, 0};

int itemnumber = 3242, r, g, b;
if (pricetagColors.find(itemnumber) != pricetagColors.end())
{
    r = pricetagColors[itemnumber][0];
    g = pricetagColors[itemnumber][1];
    b = pricetagColors[itemnumber][2]; //请注意这里可以使用逗号运算符,
                                       //但它并不是标准的 C++ 用法。
}
2016-03-19 03:39:37