C++에서는 항상 C 스타일 배열보다 std::array
을 사용해야한다고 들었습니다.std :: array over C 스타일 배열
질문을보고 나서 std :: array가 더 좋다는 사람들을 보았습니다.
그런 의미에서 나는 std::array
을 많이 사용했고 때로는 다른 라이브러리를 사용할 때 C 스타일 배열을 사용하는 메서드를 사용해야합니다.
예를 들어, 나는이 기능
void Draw(float* arg);
함께 일하고 그것은 매개 변수로 std::array<float,4>
를 전달 할 수 있습니까?
& vec4 [0]을 매개 변수로 전달하면 정의되지 않은 동작이 발생합니까?
그런 의미에서 다차원 배열에서도 마찬가지입니까? 이 배열
내가 & mtx4 전달한다면 또한 정의되지 않은 동작이있을 것이다
std::array<std::array<float,4>,4>;
선언 [0] [0]이 파라미터는?
편집 : 다차원 배열에 대한 코드에서 내 오류를 지적 해 주셔서 감사합니다. 나는 그것을 편집했다.
'std :: array'는 멤버로 배열을 가지고 있습니다. 그 배열은 다른 배열과 같은 역할을합니다. 그러나'.data()'를 대신 사용해보십시오. 그리고 "다차원 배열"예제는 일반 배열에서도 작동하지 않습니다. 2D'std :: array'에서 어떤 마법도 기대하지 마십시오. – chris
_ "매개 변수로'std :: array '을 전달할 수 있습니까?"_ ** 예! **'Draw (my_cpp_array.data());'. 너는 많은 질문을하고있어, 그래서 나는 고갈되고있다. :) –
'std :: array'에 대한 좋은 점 중 하나는 데이터에 접근하기 위해'at()'메소드를 사용하면 경계 체크를 할 것이고 따라서 유명한 하나씩의 문제로부터 당신을 구할 수 있다는 것입니다 버그, 원시 배열에서 항상 easly 검색되지 않습니다. http://en.wikipedia.org/wiki/Off-by-one_error – glampert