벡터의 벡터를 만들고 싶습니다. 이 질문은 이미 많은 시간에 게시되었지만 만족스러운 답변을 찾지 못했습니다.다른 종류의 벡터 벡터
이- 각 벡터는 다른 종류의
- 을 가질 수 있습니다 나는 컴파일 타임에 유형을 모르는 내가이 포함됩니다 얼마나 많은 벡터 모르는
기본적으로 : 그 때문에 나는 의사 코드에 그런 일을 할 수 있도록하고 싶습니다 나중에
types = ["char", "int", "double", "int"]
container<vector> x
foreach (type in types)
{
if (type == "char")
x.push_back(vector<char>)
else if (type == "int")
x.push_back(vector<int>)
else
x.push_back(vector<double>)
}
및 나는 내가 boost::any
내게 도움이 될 수 있습니다 생각하지만 난 아직 부스트에 익숙하지 않다 예를
x[0].push_back("a")
x[1].push_back(1)
x[2].push_back(3.1416)
을 위해 할 수 있도록하고 싶습니다.
요점은 이상하게 들리더라도 실제로하고 싶은 점입니다. 저는 구조체의 벡터가 필요 없으며 다른 유형의 std::vector
을 포함하는 컨테이너를 원합니다. 이유는 바이너리 파일을 읽고 있기 때문입니다. 파일의 헤더는 데이터의 수와 유형을 나타내지 만 파일에서 다른 것으로 변경할 수 있습니다. 따라서 컴파일 시간에는 알 수 없습니다.
** 정적으로 입력 된 ** 언어는'i'가 컴파일 타임 상수 표현이 아닐 때'x [i] .push_back (...); '을 어떻게 해결해야합니까? – StoryTeller
'boost/std :: variant'를 사용하십시오. – geza
@geza : OP가 컴파일 타임에 유형을 모르는 경우 변형이 도움이되지 않습니다. ''any '가 더 좋을 지 모르지만, 이것은 디자인 결함의 냄새가 난다. – AndyG