C의 이종 컨테이너
참조한 그래픽은 고정/가변 크기, 데이터 유형, 정렬 등의 특성을 기반으로 다양한 STL 컨테이너를 보여줍니다. 및 액세스 유형. 그러나 가변 크기와 이질성(다양한 데이터 유형 수용)을 동시에 지원하는 컨테이너가 부족합니다.
C에서 대부분의 컨테이너는 템플릿을 사용하여 특정 유형의 개체를 보관하도록 설계되었습니다. 포인터는 이기종 스토리지를 허용할 수 있지만 제한 사항이 있습니다. 또한 void* 컨테이너는 유형 안전성이 낮습니다.
관련되지 않은 유형을 저장할 수 있는 진정한 이기종 컨테이너의 경우 다음 옵션을 고려하세요.
Boost.Any :
Boost.Any는 모든 유형을 저장하는 일반적인 방법을 제공하므로 정수, 문자열 및 훨씬 더 복잡한 개체를 혼합하여 보관하는 컨테이너를 만들 수 있습니다.
<code class="cpp">using boost::any; std::list<boost::any> values; values.push_back(42); values.push_back("Hello, world!");</code>
Boost.Variant:
Boost.Variant는 Boost.Any와 유사하지만 컴파일 타임에 허용되는 유형을 지정해야 합니다. 이는 이기종 스토리지를 활성화하는 동시에 유형 안전성을 강화합니다.
<code class="cpp">using boost::variant; std::vector<boost::variant<int, std::string>> vec; vec.push_back(44); vec.push_back("C++");</code>
이러한 라이브러리를 사용하면 다양한 유형의 데이터를 유연하게 저장하고 액세스할 수 있는 컨테이너를 생성할 수 있습니다. STL에서 직접 제공하지는 않지만 이러한 대안은 C의 이기종 데이터 저장을 위한 솔루션을 제공합니다.
위 내용은 C에서 이기종 컨테이너를 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!