checked_array_iterator Class
checked_array_iterator Позволяет преобразовать массив или указатель в проверяемый итератор.
![]() |
---|
Этот класс является расширением Microsoft для стандартной библиотеки C++.Не будет портативный кода реализуется с помощью этого алгоритма.Пример, демонстрирующий способы написания кода, который необходимо использовать этот класс во втором примере см. |
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 пространства имен.
Дополнительные сведения об установленном итераторов, см. Проверяемые итераторы.
Пример
Следующий пример показывает, как определить и использовать checked массива итератора.
Если назначение не достаточный для размещения всех копируемых элементов, таких как будет при изменении строки:
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;
}
Конструкторы
Создает по умолчанию checked_array_iterator или checked_array_iterator из базового итератора. |
Определения типов
Тип, который содержит разницу между двумя checked_array_iterators, ссылающийся на элементы в одном контейнере. |
|
Тип, который содержит указатель на элемент, по checked_array_iterator. |
|
Тип, который содержит ссылку на элемент по checked_array_iterator. |
Функции-члены
Восстанавливает базовый итератор из его checked_array_iterator. |
Операторы
Проверяет две checked_array_iterators на равенство. |
|
Проверяет две 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 с правой стороны. |
|
Возвращает элемент, checked_array_iterator адресов. |
|
Возвращает указатель на элемент, по checked_array_iterator. |
|
С шагом checked_array_iterator к следующему элементу. |
|
Уменьшает checked_array_iterator на предыдущий элемент. |
|
Добавляет указанное смещение для checked_array_iterator. |
|
Добавляет смещение итератора и возвращает новый checked_array_iterator адресации вставленный элемент в новую позицию смещения. |
|
Уменьшает значение указанного смещения от checked_array_iterator. |
|
Уменьшает смещение итератора и возвращает новый checked_array_iterator адресации вставленный элемент в новую позицию смещения. |
|
Возвращает ссылку на элемент смещения от элемента, по checked_array_iterator на заданное число позиций. |
Требования
Заголовок: <iterator>
Пространство имен: stdext
См. также
Ссылки
Стандартная библиотека шаблонов