내 게임에서 데이터가 외부 소스에서 왔고 lua_script에서 사용할 수 있어야하므로 다음 배열 구조를 C++로 수행하려고합니다.다른 테이블에 lua_table을 넣어서 C++을 통해 다차원 배열을 만들 수 있습니까?
배열 구조는 다음과 같아야합니다. (데이터는 맵에 있고 맵에는 변수 이름과 쌍 목록이 포함됩니다 (각 쌍은 하나의 하위 배열에서 하나의 요소로 간주되는 키 값 쌍입니다) ...지도에서 준비
데이터는 완료되고 구조의 definetly 괜찮습니다. 그러니까 기본적으로 내가
items = {
["sword"] = {item_id = 1294, price = 500},
["axe"] = {item_id = 1678, price = 200},
["red gem"] = {item_id = 1679, price = 2000},
}
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
내가 너무 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
문제는 테이블이 당연히 한 번만 각 인덱스를 포함 할 수 있다는 것입니다. "테이블에있는 테이블"과 같은 것이 필요한 이유는 무엇입니까?
이 방법이 있습니까? Im는 어떤 암시라도 기쁘게 생각한다.
흠, 내가 잘못 생각하거나 잘못 설명했다고 생각합니다. 항목 이름과 ID는 고유하지만 각 항목에 선택적 양의 데이터가있을 수 있으므로 각 표 필드에 단일 값 대신 배열을 할당해야합니다. – Steini
std :: map> 여기서 Properties는 일부 데이터를 저장하기 위해 만들 수있는 구조이며 이름은 키입니다 (또는 ID로 만들 수 있습니다. int). 귀하의 예제에 따르면 int id, std :: vector 가격/비용 등의 다양한 필드를 전달하는 Property 구조/클래스를 생성 할 수 있습니다. –