알 수 없는 크기의 std::array를 함수에 전달
C에서 std를 허용하는 함수를 어떻게 생성할 수 있습니까? :array는 알려진 유형이지만 크기를 알 수 없습니까?
다음 예를 고려하십시오.
<code class="cpp">void mulArray(std::array<int, ?>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
이 함수가 제공되면 다양한 크기의 std::array를 생성하여 mulArray:
<code class="cpp">std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3; mulArray(arr1, 3); mulArray(arr2, 5); mulArray(arr3, 2);</code>
일반 C 스타일 배열을 사용하는 것과 유사한 더 간단한 방법이 있습니까?
아니요, 이 작업을 수행하는 것은 불가능합니다. 함수 템플릿이나 std::벡터와 같은 대체 컨테이너를 사용하지 않고 작업을 수행합니다.
함수 템플릿 솔루션
모든 크기의 std::배열을 처리할 수 있는 일반 함수를 생성하려면 , 함수 템플릿을 사용해야 합니다.
<code class="cpp">template<std::size_t SIZE> void mulArray(std::array<int, SIZE>& arr, const int multiplier) { for(auto& e : arr) { e *= multiplier; } }</code>
이 템플릿은 모든 크기의 정수 배열을 사용하고 각 요소에 지정된 승수를 곱하는 함수를 정의합니다.
실시간 예 이 구현 내용은 여기에서 확인할 수 있습니다: [라이브 예시](https://godbolt.org/z/Y932XW)
위 내용은 알 수 없는 크기의 std::array를 C의 함수에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!