다음을 통해 공유


winrt::com_array 구조체 템플릿(C++/WinRT)

COM 작업 할당자를 통해 기본 버퍼가 할당되고 해제되는 데이터의 C 스타일 준수 배열을 나타냅니다. 따라서 이름입니다. 일반적으로 한 구성 요소에 의해 할당되고 다른 구성 요소에서 해제되는 C 스타일 규칙 배열을 나타내는 데 사용됩니다.

winrt::com_array Windows 런타임 API와 매개 변수를 전달하는 데 사용됩니다. API를 작성하는 경우 프로젝션된 배열을 호출자에게 반환하려면 winrt::com_array 생성해야 합니다. 반환 값으로 또는 출력 매개 변수를 통해

winrt::com_arraywinrt::array_view파생됩니다. winrt::array_view winrt::com_array사용할 수 있는 멤버 및 무료 연산자를 문서화하는 winrt::array_view 구조체 템플릿 항목을 참조하세요. 그러나 기본 형식 winrt::array_view(연속된 값 계열의 비소유 뷰 또는 범위) 및 winrt::com_array(자체 요소를 할당하고 해제함) 간의 의미 체계 차이에 유의하세요.

통사론

template <typename T>
struct com_array : winrt::array_view<T>

템플릿 매개 변수

typename T com_array 포함하는 값(요소)의 형식입니다.

요구 사항

지원되는 최소 SDK: Windows SDK 버전 10.0.17134.0(Windows 10 버전 1803)

Namespace: 윈트

헤더: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h(기본적으로 포함)

생성자

생성자 묘사
com_array::com_array 생성자 입력 데이터의 복사본을 사용하거나 데이터가 제공되지 않은 경우 기본값인 T 사용하여 com_array 구조체의 새 인스턴스를 초기화합니다.

멤버 함수

기능 묘사
com_array::clear 함수 com_array 개체를 비워 줍니다.

멤버 연산자

연산자 묘사
com_array::operator=(대입 연산자) com_array 개체에 값을 할당합니다.

Free 함수

기능 묘사
detach_abi 함수 com_array 개체를 원시 값에서 분리하여 호출자에게 반환합니다. com_array 지워집니다. 또한 winrt::d etach_abi 함수참조하세요.
put_abi 함수 다른 값으로 설정할 수 있도록 com_array 주소를 검색합니다. 또한 winrt::p ut_abi 함수참조하세요.
스왑 함수 com_array 매개 변수의 내용을 바꿉니다.

com_array::com_array 생성자

입력 데이터의 복사본을 사용하거나 데이터가 제공되지 않은 경우 기본값인 T 사용하여 com_array 구조체의 새 인스턴스를 초기화합니다.

통사론

생성자는 번호가 매겨지고 아래 설명에 자세히 설명되어 있습니다.

1.  com_array() noexcept;
2.  com_array(uint32_t const count);
3.  com_array(uint32_t const count, T const& value);
4.  template <typename InIt> com_array(InIt first, InIt last);
5.  com_array(std::vector<T> const& vectorValue);
6.  template <size_t N> com_array(std::array<T, N> const& arrayValue);
7.  template <uint32_t N> com_array(T const(&rawArrayValue)[N])
8.  com_array(std::initializer_list<T> initializerListValue);
9.  com_array(void* ptr, uint32_t const count, winrt::take_ownership_from_abi_t) noexcept;
10. com_array(com_array&& comArrayValue) noexcept;

템플릿 매개 변수

typename InIt 입력 데이터를 제공하는 입력 반복기입니다.

size_t N uint32_t N 입력 데이터의 값(요소) 수입니다.

매개 변수

arrayValue com_array 개체를 초기화하는 std::array 값입니다.

comArrayValue com_array 개체를 초기화하는 다른 com_array. 생성자가 반환되면 comArrayValue 비어 있습니다.

count com_array 개체의 요소 수입니다.

first last 입력 반복기 쌍입니다. 범위 [첫 번째, 마지막)의 값은 com_array 개체를 초기화하는 데 사용됩니다.

initializerListValue com_array 개체를 초기화하는 이니셜라이저 목록 값입니다.

ptr CoTaskMemAlloc사용하여 할당한 N 값 블록에 대한 포인터입니다. com_array 개체는 이 메모리의 소유권을 맡습니다.

rawArrayValue com_array 개체를 초기화하는 C 스타일 배열입니다.

value com_array 개체의 각 요소에 제공할 값입니다.

vectorValue com_array 개체를 초기화하는 std::vector 값입니다.

발언

생성자는 위의 구문으로 번호가 매겨집니다.

1. 기본 생성자

빈 버퍼를 생성합니다.

2. 용량 생성자; 기본값

기본 생성 T복사본인 개수 요소의 버퍼를 만듭니다.

이는 개수 요소의 버퍼를 만드는 것과 유사하지만, 각각은 기본 생성 T.

auto players{ winrt::com_array<MediaPlayer>(50) };

MediaPlayer 개체의 기본 생성자는 새 미디어 플레이어 개체에 대한 참조를 만들고 해당 복사 생성자는 참조를 복사합니다. 따라서 위의 코드 줄은 동일한 미디어 플레이어 개체에 대한 50개의 참조 배열을 만듭니다. 50개의 다른 미디어 플레이어 개체 배열을 만들지 않습니다.

3. 용량 생성자; 명시적 값

제공된 복사본인 개수 요소의 버퍼를 만듭니다.

winrt::com_array(2, 42) 범위 생성자(4)를 사용하려는 시도로 해석됩니다. 그러나 2와 42는 반복기가 아니기 때문에 실패합니다. 명시적 int32_t 값이 있는 용량 생성자로 해석되도록 하려면 명시적으로 부호 없는 정수를 첫 번째 매개 변수인 com_array(2u, 42)사용합니다.

4. 범위 생성자

범위 [첫 번째, 마지막)의 복사본인 버퍼를 만듭니다.

다음과 같이 기본 형식 T 명시적으로 지정합니다.

auto a{ winrt::com_array<T>(source.begin(), source.end()) };

범위를 복사하는 대신 이동하려면 std::move_iterator 반복기 어댑터를 사용합니다.

auto a{ winrt::com_array<T>(std::move_iterator(source.begin()),
                            std::move_iterator(source.end())) };

5. 벡터 생성자

vectorValue내용의 복사본인 버퍼를 만듭니다.

6. 배열 생성자

arrayValue내용의 복사본인 버퍼를 만듭니다.

7. C 스타일 배열 생성자

rawArrayValueC 스타일 배열의 내용 복사본인 버퍼를 만듭니다.

8. Initializer-list 생성자

initializerListValue이니셜라이저 목록 내용의 복사본인 버퍼를 만듭니다.

9. ABI 생성자

지정된 길이의 버퍼 소유권을 가져옵니다.

생성자의 가장 낮은 수준입니다. CoTaskMemAlloc통해 이미 할당된 메모리 블록이 있고 com_array 책임을 맡길 때 사용합니다. 이 생성자에 대한 특별한 요구 사항을 강조하려면 최종 인수가 winrt::take_ownership_from_abi합니다.

10. 생성자 이동

동일한 형식의 다른 com_array 리소스를 이동하여 원래 리소스를 비워 둡니다.

생성자 5, 6 및 7

제공된 컨테이너의 내용을 복사합니다. 범위 생성자(4)를 std::move_iterator 반복기 어댑터와 함께 사용하여 내용을 복사하는 대신 com_array 이동할 수 있습니다.

com_array::clear 함수

com_array 개체를 비워 줍니다.

통사론

void clear() noexcept;

detach_abi 함수

com_array 개체를 원시 값에서 분리하여 호출자에게 반환합니다. com_array 지워집니다. 또한 winrt::d etach_abi 함수참조하세요.

통사론

auto detach_abi(winrt::com_array<T>& object) noexcept;
auto detach_abi(winrt::com_array<T>&& object) noexcept;

매개 변수

object 작동할 com_array 개체입니다.

반환 값

요소 개수와 com_array 걸쳐 있는 연속된 값 계열을 포함하는 2개 요소 튜플입니다.

com_array::operator=(대입 연산자)

com_array 개체에 값을 할당합니다.

통사론

com_array& operator=(winrt::com_array&& comArrayValue) noexcept;

매개 변수

com_array 개체에 할당할 com_array 값을 comArrayValue.

반환 값

com_array 개체에 대한 참조입니다.

put_abi 함수

다른 값으로 설정할 수 있도록 com_array 주소를 검색합니다. 또한 winrt::p ut_abi 함수참조하세요.

통사론

template<typename T> auto put_abi(winrt::com_array<T>& object) noexcept;

매개 변수

object 작동할 com_array 개체입니다.

반환 값

다른 값으로 설정할 준비가 된 com_array주소입니다.

swap 함수

com_array 매개 변수의 내용을 바꿉니다.

통사론

friend void swap(winrt::com_array& left, winrt::com_array& right) noexcept;

매개 변수

left right 내용이 다른 매개 변수의 내용과 상호 교환되는 com_array 값입니다.

본보기

using namespace winrt;
...
    com_array<byte> left{ 1,2,3 };
    com_array<byte> right{ 4,5,6 };
    swap(left, right);

참고 항목

  • winrt 네임스페이스