>백엔드 개발 >C++ >C에서 2D`std::array`에 단순 중괄호 초기화를 사용할 수 없는 이유는 무엇입니까?

C에서 2D`std::array`에 단순 중괄호 초기화를 사용할 수 없는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-21 11:51:11498검색

Why Can't I Use Simple Brace Initialization for 2D `std::array`s in C  ?

2D std::arrays에 대해 Brace 초기화가 불가능한 이유는 무엇입니까?

C에서는 다음과 같이 std::array를 사용하여 간단한 2D 배열을 정의할 수 있습니다. 예:

std::array<std::array<int, 3>, 2> a = {
    {1, 2, 3},
    {4, 5, 6}
};

그러나 이 초기화는 컴파일러 오류로 인해 실패합니다. 초기화 프로그램이 너무 많습니다. 이러한 불일치의 이유는 std::array C 스타일 배열을 캡슐화하는 집계 클래스입니다.

올바른 초기화를 위해서는 C 클래스와 여기에 포함된 C 배열에 별도의 중괄호가 필요합니다.

std::array<std::array<int, 3>, 2> a = { {{{1, 2, 3}}, {{4, 5, 6}}} };

수정된 코드에서는 다음과 같습니다.

  • 가장 바깥쪽 중괄호는 std::array를 초기화합니다. class.
  • 중첩된 중괄호는 클래스 내의 C 스타일 배열을 초기화합니다.

C와 C 구문의 중괄호 구조를 일치시키면 중괄호 초기화를 사용하여 다차원 배열을 성공적으로 초기화할 수 있습니다. C로 .

위 내용은 C에서 2D`std::array`에 단순 중괄호 초기화를 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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