초기화 목록을 사용하여 컨테이너를 초기화할 때, std::Vector와 std::array 사이의 구문 차이를 발견했을 수도 있습니다. std::벡터는 단일 중괄호 {}를 사용하여 초기화하는 반면, std::array에는 이중 중괄호 {{}}가 필요합니다. 이러한 구별이 존재하는 이유를 이해하기 위해 우리는 이러한 컨테이너의 기본 속성을 조사합니다.
std::Vector와 달리, 사용자 정의 생성자가 있는 std::array는 집계 유형으로 간주됩니다. 즉, 초기화 목록을 허용하는 생성자를 포함하여 사용자가 선언한 생성자가 부족하다는 의미입니다. 따라서 std::array의 초기화는 C에서 상속된 C 기능인 집계 초기화에 의존합니다.
C에서, 집계 초기화는 두 가지 방법으로 수행할 수 있습니다:
이전 스타일에서는 선언 내에서 초기화할 때 추가 중괄호가 제거될 수 있었습니다. 그러나 이 옵션은 직접 목록 초기화에는 사용할 수 없습니다.
CWG 결함 #1270은 이 제한 사항을 해결하려고 노력하여 다른 항목에서 중괄호 제거를 허용합니다. 목록 초기화 형식. 승인되면 다음 구문이 유효해집니다:
std::array
이 변경으로 인해 std::Vector와 std::array 사이의 현재 구문 불일치가 제거되어 집계 초기화 방식에 일관성이 제공됩니다.
위 내용은 `std::벡터`와 `std::array`가 초기화 목록에 대해 다른 구문을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!