Domanda
Non conosco: http://lua-users.org/wiki/SimpleLuaApiExample
E mi mostra come costruire una tabella (chiave, valore) entrata coppia da ingresso.
Supponiamo invece, voglio costruire un tavolo gigantesca (diciamo qualcosa di un tavolo di entrata 1000, dove entrambi chiave e valore sono stringhe), c'è un modo veloce per fare questo in lua (invece di 4 chiamate func per ogni voce:
push
key
value
rawset
Soluzione
Quello che hai scritto è il modo più veloce per risolvere questo problema. tavoli Lua sono brillantemente progettati, e abbastanza veloce che non v'è alcuna necessità di una sorta di falso " suggerimento" per dire 'mi aspetto che questa tabella di crescere per contenere 1000 elementi'.
Altri suggerimenti
Per le chiavi di stringa, è possibile utilizzare lua_setfield
.
Sfortunatamente, per le tabelle associative (chiavi stringa, chiavi non consecutivi interi), no, non c'è.
Per tabelle matrice di tipo (in cui viene utilizzata la normale numero intero indicizzazione 1 ... N), ci sono alcune funzioni prestazioni ottimizzate, lua_rawgeti
e lua_rawseti
: http://www.lua.org/pil/27.1.html
È possibile utilizzare CreateTable per creare una tabella che ha già il numero di slot. Tuttavia, dopo che, non v'è alcun modo per farlo più velocemente diverso
for(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}