> 백엔드 개발 > C++ > C 컨테이너는 다양한 유형의 데이터를 저장할 수 있나요?

C 컨테이너는 다양한 유형의 데이터를 저장할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-05 06:34:01
원래의
972명이 탐색했습니다.

Can C   Containers Store Data of Different Types?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿