爲我的遊戲im試圖完成由C++以下數組結構,因爲數據來自外部來源,應該在lua_script中可用。我可以把lua_table放在另一個表中來通過C++來構建一個多維數組嗎?
數組結構應該看起來像這樣:(數據在映射中,映射包含變量的名稱和對的列表(每對是被認爲是一個子數組中的一個元素的關鍵值對) ...
在地圖製作的數據是完整的,結構definetly沒關係。 所以基本上我有
typedef std::map<std::string, std::list<std::pair> >;
/\index(e.g: sword) /\ /\
|| ||
|| Pair: Contains two strings (key/value pair)
||
List of Pairs for each array
items = {
["sword"] = {item_id = 1294, price = 500},
["axe"] = {item_id = 1678, price = 200},
["red gem"] = {item_id = 1679, price = 2000},
}
我得到了,使f AR現在是:
for(ArrayMap::iterator it = this->npc->arrayMap.begin(); it != this->npc->arrayMap.end(); it++) {
std::string arrayName = (*it).first;
if((*it).second.size() > 0) {
lua_newtable(luaState);
for(ArrayEntryList::iterator itt = (*it).second.begin(); itt != (*it).second.end(); itt++) {
LuaScript::setField(luaState, (*itt).first.c_str(), (*itt).second.c_str());
}
lua_setglobal(luaState, arrayName.c_str());
}
}
但是,這隻會產生以下結構:
(table)
[item_id] = (string) 2000
[name] = (string) sword
[price] = (string) 500
的問題是,該表可以ofcourse只包含每個索引一次。 這就是爲什麼我需要像「表中的一張桌子」這樣的事情嗎?
有沒有辦法做到這一點?我很高興任何提示。
嗯,我想你讓我錯了,或者我解釋錯了。項目名稱和ID是唯一的,但我需要爲每個表格字段分配一個數組而不是一個值,因爲每個項目都可以有可選數量的數據。 – Steini
std :: map>其中Properties是爲了存儲某些數據而創建的結構,而key是名稱(或者可以使其成爲id,在這種情況下,key將會是int)。根據你的例子,你可以創建一個Property結構/類,它攜帶可變數量的字段,如int id,std :: vector 價格/成本等。 –