【发布时间】:2016-11-21 09:46:16
【问题描述】:
我有std::map,其中包含与键关联的值列表。实际实现包含许多这样的 Key。 Lua Table 实现中是否有类似的方法可以为特定键保存多个值。如果是这样,如何从该表中写入和读取。
我推荐了How do I create a Lua Table in C++, and pass it to a Lua function? 我只能访问我的 C++ 代码中的设置和获取值,该代码编写得更通用,不能在 C++ 中创建表。 (第三方 C++ 代码)。
我所拥有的只是我可以使用
luaState = luaL_newstate();
lua_register(luaState, "getValue", get_value);
lua_register(luaState, "setValue", set_value);。
C++ 代码有类似的东西
typedef std::set<const char *> TValueNames;
std::map<const char *, TValueNames> keyValueList;
通过参考 Lua 文档,我了解到我可以创建一个以 Key 作为索引的表,并将值作为其数据。但我需要知道如何为一个键分配多个值(数据)。 https://www.lua.org/pil/2.5.html
示例 lua 脚本实现是这样的,
local keyType = getValue("KeyType");
local Key = getValue("Key");
local Value = getValue("Value");
KeyValueTable = {}
KeyValueTable[Key] = Value;
我需要创建一些可以保存信息的东西,例如,
["Key1"] = {"Value1,Value2,Value3"};
["Key2"] = {"Value2,Value3,Value4,Value5"};
【问题讨论】:
-
您需要 LUA 还是 C++ 中的表。在 C++ 中,您可以查看
std::multimap。 -
我需要 Lua 中的表,它可以保存类似于 C++ 中的 std::map
-
@kar:
std::map不能为每个键保存多个值。只有std::multimap可以这样做。您的keyValueList仍然只持有一个值。只是这个值恰好是一个容器,它本身包含了多个东西。但是map本身只持有一个对象。
标签: dictionary lua lua-table