알 수 없는 크기의 std::array를 함수에 전달
질문:
유형은 알려져 있지만 크기는 다양한 std::array를 처리하는 함수를 어떻게 작성할 수 있나요? 예를 들어, 다음 예를 고려해 보십시오.
<code class="cpp">// Hypothetical function void mulArray(std::array<int, ?>& arr, const int multiplier) { for (auto& e : arr) { e *= multiplier; } }</code>
다음과 같이 다양한 크기의 배열을 수용하기 위해 mulArray와 같은 함수를 어떻게 정의할 수 있습니까?
<code class="cpp">std::array<int, 17> arr1; std::array<int, 6> arr2; std::array<int, 95> arr3;</code>
답변:
안타깝게도 함수 템플릿을 사용하거나 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>
이 예에서 mulArray 함수는 함수 템플릿으로 정의되어 있어 모든 크기의 배열을 처리할 수 있습니다. SIZE 매개변수는 컴파일 시 배열의 크기를 지정합니다.
사용 예:
<code class="cpp">// Array of size 17 std::array<int, 17> arr1; // Function call with template instantiation for size 17 mulArray(arr1, 3);</code>
참고: 함수 템플릿을 사용할 때, 함수 정의는 컴파일 중에 액세스할 수 있도록 헤더 파일에 배치되어야 합니다.
위 내용은 C 함수에서 다양한 크기의 std::배열을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!