std::array의 값 채우기 생성자가 부족함: 감독 또는 의도적인 설계?
채우기 메서드가 있음에도 불구하고 모든 요소에 단일 값을 할당할 수 있는 std::array에는 값을 인수로 사용하는 생성자가 없다는 사실이 개발자들 사이에서 의문을 제기했습니다. std::Vector와 같은 동적 컨테이너는 이러한 생성자를 제공하지만 std::array에 이 기능이 없는 이유는 무엇입니까?
설계 결정의 이면에는
std::array가 있습니다. 집합체로 설계되었습니다. 즉, 사용자가 선언한 생성자가 없습니다. 집계는 사용자 정의 생성자 및 기본 클래스가 없는 멤버로만 구성된 데이터 구조입니다. 해당 구성은 컴파일러에 의해 자동으로 처리됩니다.
기본 구성 및 집계 초기화
std::array와 같은 집계 유형의 기본 구성으로 인해 메모리가 초기화되지 않습니다. 클래스와 달리 기본 생성은 멤버별 초기화를 호출하지 않습니다. 유형이 간단하게 초기화 가능한 경우 메모리는 불확정한 값을 갖게 됩니다.
대체 접근 방식
std::array를 특정 값으로 채우려면 채우기 메서드를 사용할 수 있습니다. 배열이 기본으로 구성된 후에 사용됩니다. 기본 구성은 일반 구성처럼 배열을 0으로 만드는 대신 초기화되지 않은 값으로 배열을 초기화합니다. 이를 통해 모든 요소를 -1로 초기화하는 예와 같이 0이 아닌 값으로 채울 수 있습니다.
결론
std에 값 채우기 생성자가 없음: :array는 실수가 아니라 의도적인 디자인 결정입니다. std::array의 집합체 상태는 사용자가 선언한 생성자를 방지하지만 기본 구성과 이후의 채우기 메소드 사용은 단일 값으로 배열을 초기화하는 대체 방법을 제공합니다.
위 내용은 std::array에 값을 채우는 생성자가 부족한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!