Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;,并将其传递给Lua函数? < C++中,我有一个 map < /C>,包含未知数量的条目。如何将其传递给Lua函数,以便Lua函数可以将数据用作表?_C++_String_Map_Lua_Lua Table - Fatal编程技术网

如何在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) {

几个选项

  • 将映射复制到新的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) {
        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);
    }
    

    在..

    中替换了映射的正确类型后,向元表添加迭代器函数应该不会太困难,它可以像对表那样使用;除非该表很小,并且对一个大部分为只读的表有很多请求。