왜 std::array에는 값 초기화 기능이 있는 생성자가 없나요?
std::array는 고정된 배열을 나타내는 클래스입니다. 크기 배열이지만 모든 요소에 대한 값을 취하는 생성자가 없습니다. 이러한 생성자가 없으면 특히 std::Vector와 같은 동적 컨테이너에 유사한 생성자가 있는 경우 혼란스러워 보일 수 있습니다.
std::array가 집계 유형으로 설계되었으므로 이러한 생략은 의도적인 것입니다. C의 집계는 데이터 멤버로만 구성되고 사용자가 선언한 생성자가 없는 클래스입니다. 따라서 std::array는 중괄호로 묶인 초기화 목록이나 복사/이동 생성을 통해서만 초기화할 수 있습니다.
std::array는 모든 요소에 값을 할당하기 위한 채우기 메서드를 제공하지만 대체 메서드는 아닙니다. 값 초기화가 있는 생성자의 경우. fill 메소드는 이미 구성된 배열에서 작동하여 해당 요소를 초기화하지만 구성 전 메모리 상태에는 영향을 주지 않습니다.
특정 값(-1)으로 std::array의 모든 요소를 초기화해야 하는 경우 예제에서는 기본 구성 다음에 채우기를 사용할 수 있습니다.
<code class="cpp">std::array<int, 10> myArray; // default construction (uninitialized memory) myArray.fill(-1); // initialize all elements with -1</code>
기본 구성은 집계에 대한 메모리를 0으로 만들지 않으므로 채우기 메서드는 0으로 지정된 값을 덮어쓸 필요 없이 모든 요소를 올바르게 초기화합니다. 이 동작은 사소하게 초기화할 수 없는 유형의 경우 변경될 수 있습니다.
위 내용은 std::array에 값 초기화 기능이 있는 생성자가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!