문제는 이전에 여러 번 논의하고있다. 하나는 필요로하는 경우해야 할 일 :그래프/트리 구현
struct Node
{
::std::vector<Node> nodes_;
};
here에서 하나 Node*
에 (스마트) 포인터가 정식 해결책이 될 수 있다는 인상을 가져옵니다. 이는 약간의 간접 참조와 그에 상응하는 성능 저하를 의미합니다. here에서, 우리는 T
하지 libc++
불완전한 형태이지만, 어디 libstdc++
이 ::std::vector<T>
인스턴스 생성을 지원하는, 참조하십시오. 이것은 거의 휴대용이 아닙니다. 그러나 하나의 솔루션은 불완전한 유형을 지원하는 휴대 가능한 ::std::vector
닮은 컨테이너 일 수 있습니다. 마지막으로 다음을 할 수 있습니다 :
template <::std::size_t I = 0>
struct Node
{
::std::vector<Node<I + 1> > nodes_;
};
template <>
struct Node<20>
{
};
그래프/트리에 제한이 있습니다. 추가 해결 방법으로 인해 Node
이 ::std::vector<Node> nodes_;
의 선언의 시점에서 불완전한 유형을 Node
의 포함되어 있지만 사실로 존재합니까?
이에 대한 부스트 라이브러리가있다. – zch
@zch 의견을 작성 하시겠습니까? 받아 들일거야. – user1095108