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
È stato utile?

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top