다음을 통해 공유


checked_array_iterator Class

checked_array_iterator 클래스를 사용 하면 배열 또는 포인터는 반복기로 변환 합니다.

[!참고]

이 클래스에는 표준 C++ 라이브러리에 대 한 Microsoft 확장입니다.이 알고리즘을 사용 하 여 구현 하는 코드를 휴대용 되지 않습니다.이 클래스는 사용 하지 않아도 되는 코드를 작성 하는 방법을 보여 주는 예제를 보려면 아래의 두 번째 예제를 참조 하십시오.

template <class _Iterator>
    class checked_array_iterator
        : public iterator<
            typename iterator_traits<_Iterator>::iterator_category, 
            typename iterator_traits<_Iterator>::value_type, 
            typename iterator_traits<_Iterator>::difference_type, 
            typename iterator_traits<_Iterator>::pointer, 
            typename iterator_traits<_Iterator>::reference>

설명

이 클래스에 정의 되어 있는 stdext 네임 스페이스입니다.

반복기 기능에 대 한 자세한 내용은 확인 된 반복기.

예제

다음 샘플에서는 정의 하 고 체크 배열 하는 반복기를 사용 하는 방법을 보여 줍니다.

대상이 너무 작아서 모든 요소를 복사 하 고 저장할 수 없는 경우, 줄을 변경 하는 경우 같은 경우는 다음과 같습니다.

copy(a, a + 5, checked_array_iterator<int*>(b, 5));

를 다음으로 변경:

copy(a, a + 5, checked_array_iterator<int*>(b, 4));

런타임 오류가 발생 합니다.

// checked_array_iterator_overview.cpp
// compile with: /EHsc
#include <algorithm>
#include <iostream>

using namespace std;
using namespace stdext;

int main() {
   int a[]={0, 1, 2, 3, 4};
   int b[5];
   copy(a, a + 5, checked_array_iterator<int*>(b, 5));

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;

   // constructor example
   checked_array_iterator<int*> checked_out_iter(b, 5);
   copy(a, a + 5, checked_out_iter);

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;
}
  

필요성을 방지 하기 위해는 checked_array_iterator 클래스 표준 C++ 라이브러리 알고리즘을 사용 하는 경우, 사용 하는 것은 vector 는 동적으로 할당 된 배열 대신.다음 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.

// checked_array_iterator_2.cpp
// compile with: /EHsc

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> v(10);
    int *arr = new int[10];
    for (int i = 0; i < 10; ++i)
    {
        v[i] = i;
        arr[i] = i;
    }

    // std::copy(v.begin(), v.end(), arr); will result in
    // warning C4996. To avoid this warning while using int *,
    // use the Microsoft extension checked_array_iterator.
    std::copy(v.begin(), v.end(),
              stdext::checked_array_iterator<int *>(arr, 10));

    // Instead of using stdext::checked_array_iterator and int *,
    // consider using std::vector to encapsulate the array. This will
    // result in no warnings, and the code will be portable.
    std::vector<int> arr2(10);    // Similar to int *arr = new int[10];
    std::copy(v.begin(), v.end(), arr2.begin());

    for (int j = 0; j < arr2.size(); ++j)
    {
        cout << " " << arr2[j];
    }
    cout << endl;

    return 0;
}
  

Aa985928.collapse_all(ko-kr,VS.110).gif생성자

checked_array_iterator

기본 구문 checked_array_iterator 또는 checked_array_iterator 내부 반복기에서.

Aa985928.collapse_all(ko-kr,VS.110).gif형식 정의

difference_type

2 간의 차이 설명 하는 형식 checked_array_iterators 동일한 컨테이너 내에서 요소를 참조 합니다.

pointer

으로 주소가 지정 된 요소에 대 한 포인터를 제공 하는 형식에 checked_array_iterator.

reference

으로 주소가 지정 된 요소에 대 한 참조를 제공 하는 형식에 checked_array_iterator.

Aa985928.collapse_all(ko-kr,VS.110).gif멤버 함수

base

내부 반복기에서 복구 되는 checked_array_iterator.

Aa985928.collapse_all(ko-kr,VS.110).gif연산자

연산자 = =

두 테스트 checked_array_iterators 같은지.

연산자! =

두 테스트 checked_array_iterator지 s.

연산자 <

테스트는 checked_array_iterator 연산자의 왼쪽에는 보다는 checked_array_iterator 오른쪽에.

연산자 >

테스트는 checked_array_iterator 연산자의 왼쪽에 보다는 checked_array_iterator 오른쪽에.

연산자 < =

테스트는 checked_array_iterator 보다 작거나 같음 연산자의 왼쪽에 되는 checked_array_iterator 오른쪽에.

연산자 > =

테스트는 checked_array_iterator 보다 크거나 같음 연산자의 왼쪽에는 있는 checked_array_iterator 오른쪽에.

operator*

요소는 반환 된 checked_array_iterator 주소입니다.

operator->

포인터를 반환 하 여 주소가 지정 된 요소에는 checked_array_iterator.

operator++

증가 checked_array_iterator 다음 요소에 있습니다.

운영자-

감소는 checked_array_iterator 이전 요소입니다.

= 연산자

지정 된 오프셋에 추가 된 checked_array_iterator.

operator +

반복기에 오프셋을 추가 하 고 새 반환 checked_array_iterator 새 오프셋된 위치에 삽입 된 요소를 주소 지정 합니다.

-= 연산자

감소에서 지정 된 오프셋 된 checked_array_iterator.

운영자-

반복기의 오프셋은 감소 및 새로운 반환 checked_array_iterator 새 오프셋된 위치에 삽입 된 요소 주소 지정.

operator[]

요소의 오프셋 참조로 주소가 지정 된 요소에서 반환 된 checked_array_iterator 지정 된 수의 위치.

요구 사항

헤더: <iterator>

네임 스페이스: stdext

참고 항목

참조

표준 템플릿 라이브러리

기타 리소스

<iterator> 멤버

checked_array_iterator 멤버