如何在C++;,并将其传递给Lua函数? < C++中,我有一个 map < /C>,包含未知数量的条目。如何将其传递给Lua函数,以便Lua函数可以将数据用作表?
几个选项如何在C++;,并将其传递给Lua函数? < C++中,我有一个 map < /C>,包含未知数量的条目。如何将其传递给Lua函数,以便Lua函数可以将数据用作表?,c++,string,map,lua,lua-table,C++,String,Map,Lua,Lua Table,几个选项 将映射复制到新的Lua表中,并传递Lua表 创建通过元表的\uuu索引和\uu新索引元方法进行读写的 当然,(1)的缺点是所有的复制 (2)的缺点是pairs()无法在代理表上工作 关于广义对的Lua修复的讨论是和。如果您想要一个真正的lua表,则需要广义的对: lua_newtable(L); int top = lua_gettop(L); for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
\uuu索引
和\uu新索引
元方法进行读写的pairs()
无法在代理表上工作
关于广义
对的Lua修复的讨论是和。如果您想要一个真正的lua表,则需要广义的对
:
lua_newtable(L);
int top = lua_gettop(L);
for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
const char* key = it->first.c_str();
const char* value = it->second.c_str();
lua_pushlstring(L, key, it->first.size());
lua_pushlstring(L, value, it->second.size());
lua_settable(L, top);
}
在..中替换了映射的正确类型后,向元表添加迭代器函数应该不会太困难,它可以像对表那样使用;除非该表很小,并且对一个大部分为只读的表有很多请求。