次の方法で共有


checked_array_iterator Class

checked_array_iteratorクラスを使用すると、チェックされた反復子にポインターまたは配列を変換します。

[!メモ]

このクラスは、Microsoft 拡張機能には、標準 C++ ライブラリです。このアルゴリズムを使用して実装するコードは移植できなくなります。このクラスの使用を必要としないコードを記述する方法を示す例については、次の 2 つ目の例を参照してください。

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(ja-jp,VS.110).gifコンストラクター

checked_array_iterator

デフォルトの構築checked_array_iteratorや、 checked_array_iterator 、基になっている反復子から。

Aa985928.collapse_all(ja-jp,VS.110).gifTypedef

difference_type

2 つの違いを提供する種類checked_array_iterators は、同じコンテナー内の要素を参照します。

ポインター

処理要素へのポインターを提供する型は、 checked_array_iterator

参照

処理要素への参照を提供する型は、 checked_array_iterator

Aa985928.collapse_all(ja-jp,VS.110).gifメンバー関数

base

基になっている反復子からの回復は、 checked_array_iterator

Aa985928.collapse_all(ja-jp,VS.110).gif演算子

演算子 = =

2 つのテストをchecked_array_iterators を等しいかどうか。

演算子! =

2 つのテストをchecked_array_iterators 等しくないです。

演算子 <

テストの場合は、 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

演算子 +

オフセットする反復子を追加し、新しいを返しますchecked_array_iterator 、新しいオフセット位置に挿入された要素に対応します。

演算子 =

デクリメント指定したオフセットから、 checked_array_iterator

演算子-

オフセットする反復子をデクリメントし、新しいを返しますchecked_array_iterator新しいオフセット位置に挿入された要素に対応します。

operator[]

処理要素から要素のオフセットへの参照を返します、 checked_array_iteratorでは、指定した位置数。

必要条件

ヘッダー: <iterator>

名前空間: stdext

参照

関連項目

標準テンプレート ライブラリ

その他の技術情報

<iterator> メンバー

checked_array_iterator のメンバー