C의 이종 컨테이너
STL 컨테이너 분류에서 일부 요구 사항, 즉 가변 크기 및 이종(다른 유형의 데이터)이 충족되지 않은 상태로 남아 있습니다. . C가 이 사용 사례에 대한 솔루션을 제공하는지 묻는 것이 합리적입니다.
일반적으로 C 컨테이너는 단일 유형의 객체를 보관하도록 설계되었지만 포인터나 Boost::any를 활용하여 다양한 유형을 수용할 수 있습니다.
포인터 사용:
기본 유형에 대한 포인터 컨테이너를 저장하여 해당 유형에서 파생된 개체를 보유할 수 있습니다.
<code class="cpp">std::vector<MyBaseType*>;</code>
boost::any:
Boost는 모든 유형의 객체를 안전하게 저장할 수 있는 Boost::any를 제공합니다.
<code class="cpp">using boost::any_cast; typedef std::list<boost::any> many;</code>
그런 다음 다음을 사용할 수 있습니다. any_cast를 사용하면 객체를 원하는 유형으로 캐스팅할 수 있습니다.
boost::variant:
Boost::variant를 사용하면 허용되는 유형 집합을 지정할 수 있는 또 다른 옵션입니다. 유형:
<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>
그러나 Boost::any 및 Boost::variant는 표준 STL 컨테이너에 비해 어느 정도 성능 및 메모리 오버헤드가 있다는 점에 유의하는 것이 중요합니다.
위 내용은 C 컨테이너는 다양한 유형의 데이터를 저장할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!