2009-01-17 18 views

cevap

18

için beklenir: ikame haritanızda için doğru türleriyle

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); 
} 

..

5

Birkaç seçenekleri ...

  1. Kopya yeni Lua tabloya haritası ve Lua tablo geçmektedir.

  2. okur yönlendirir ve tabii ki, bir MetaTable en __index ve __newindex metamethods

(1) tüm kopyalanmasına dezavantajı aracılığıyla yazar bir proxy table oluşturun.

dezavantajı (2) 'pairs() vekil tablo

genel pairs için Lua düzeltmelerin bir tartışma in the wiki ve this mailing list thread olduğu çalışmaz olmasıdır. gerçek lua tablo istiyorsanız Genelleştirilmiş pairsLua 5.2

+0

bir yineleyici eklemek çok zor olmamalı Tablolar için çiftler() gibi kullanılabilecek metatabla işlevi. –

+0

genellikle 2 seçeneğini yapar; Tablo küçük değilse ve çoğunlukla salt okunur bir masaya çok sayıda istek var. – Javier