>백엔드 개발 >C++ >알 수 없는 크기의 std::array를 C의 함수에 전달하는 방법은 무엇입니까?

알 수 없는 크기의 std::array를 C의 함수에 전달하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-24 19:04:301019검색

How to Pass an std::array of Unknown Size to a Function in C  ?

알 수 없는 크기의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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