나는 식별자 < => 구조체 쌍의 정적지도가 있고 각 구조체에는 배열이 포함되어야합니다. 컴파일 타임에는 모든 것이 알려져 있습니다. 즉, 여기에 이와 같은 것을 갖고 싶습니다 :가변 길이의 배열을 사용하여 구조체를 정적으로 초기화
ID1 => name: someString
flagCount: 3
flags: [1, 5, 10]
(가능한 경우). 물론, 같은 선언 :
struct Info
{
const char* name;
int flagCount;
int flags[];
};
... 나는 제외 (때문에 다양한 길이 배열에, 수 없습니다
Info infos [] = { ... };
내가 좋아 초기화 할 수있는 한, 이상적 일 것이다 뭔가 빠졌어요). 양자 택일로, 나는 약 (ab) boost::assign
이것을 사용하지만, 거기에 권장되는 해결책이 있는지 궁금하네요. 배열에 정보 구조체 만 저장할 수 있고 매핑을 다른 곳에 저장할 수 있다면 괜찮습니다.
편집 : 현재 해결 방법에 대한 메모입니다. 지금이 순간, 내가 가진 :
struct Info
{
Info (const std::vector<int>& flags) : flags {}
std::vector<int> flags;
};
내가 사용 (? 템플릿 기반)
작동const std::map<ID, Info> map = boost::assign::map_list_of
("ID1", Info (boost::assign::list_of (1)(2)(3));
, 나는 간단한 해결책이 있는지 그냥 궁금 해요.
컴파일 타임에 배열의 각 Info 오브젝트에 대한 플래그 배열의 길이를 알고 계십니까? – dirkgently
예. 그러나 다른 Infos에서는 다릅니다. – Anteru