>백엔드 개발 >C++ >`std::Vector::resize()` 및 `boost::container::Vector::resize()`는 C 표준 전반에 걸쳐 일관된 제로 초기화 동작을 나타냅니까?

`std::Vector::resize()` 및 `boost::container::Vector::resize()`는 C 표준 전반에 걸쳐 일관된 제로 초기화 동작을 나타냅니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-04 08:45:12766검색

Does `std::vector::resize()` and `boost::container::vector::resize()` Exhibit Consistent Zero-Initialization Behavior Across C   Standards?

Vector::resize() 동작은 C 11 및 Boost.Container에서 일관됩니까?

std::Vector::의 동작 resize()는 일반적으로 데이터를 일시적으로 버퍼링하여 사용하기 전에 적절한 크기로 크기를 조정하는 데 사용됩니다. C 03에서는 std::Vector::resize()가 복사를 통해 새 요소를 생성했지만 C 11에서는 복사하지 않고 새 요소를 초기화하는 오버로드를 도입했습니다.

Boost.Container는 Boost에 대한 추가 default_init 오버로드를 제공합니다. 컨테이너::벡터::resize() - 기본값으로 새 요소를 초기화합니다. 이 기능은 필요한 만큼만 비용을 지불한다는 C 11의 설계 철학과 일치합니다.

C 03 및 C 11 모드 모두에서 std::Vector 및 Boost::container::Vector의 동작을 테스트한 결과 예상치 못한 결과가 발생했습니다. 관찰되었다. C 03 및 C 11 모두에서 초기화를 지정하지 않고 벡터 크기를 조정하면 std::Vector 및 Boost::container::Vector 모두에 대한 새 요소의 초기화가 0이 됩니다.

이 동작은 인터페이스 변경을 나타냅니다. std::Vector에서는 구현에 아무런 영향을 미치지 않으며 resize()에 추가된 최종 요소는 여전히 0으로 초기화됩니다. 제기된 문제는 이 동작이 올바른지 여부입니다.

위 내용은 `std::Vector::resize()` 및 `boost::container::Vector::resize()`는 C 표준 전반에 걸쳐 일관된 제로 초기화 동작을 나타냅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.