C 03에서 std::Vector
C 11과 유사한 세 가지 resize() 오버로드를 지원하는 Boost.Container의 벡터
그러나 C 11 모드에서는 std::Vector와 Boost.Container의 벡터가 모두 여전히 초기화되었습니다. 값 초기화를 위한 오버로드를 사용할 때 0이 있는 새 요소. 이는 다음과 같은 질문을 제기합니다.
C 11 std::Vector::resize() 인터페이스 변경이 실제로 효과적인가요?
결과에 따르면 인터페이스 변경이 의도한 효과를 얻지 못한 것으로 나타났습니다. 새로운 요소는 여전히 두 곳 모두에서 초기화되고 있습니다.
부록
기존 할당자의 한계를 해결하기 위해 대체 할당자 어댑터가 제안되었습니다. 모든 유형의 요소 초기화:
template <typename T, typename A=std::allocator<T>> class default_init_allocator : public A { // ... implementation };
이 어댑터는 constructor() 호출에 개입합니다. 값 초기화, 이를 기본 초기화 호출로 변환합니다. 또한 기본 초기화를 올바르게 처리합니다.
위 내용은 C 11의 `std::벡터::resize()` 인터페이스가 효과적으로 새 요소의 값을 초기화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!