Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
operator!=
Проверяет, не равен ли объект итератора слева от оператора итератору справа.
template <class RandomIterator>
bool operator!=(const reverse_iterator<RandomIterator>& left, const reverse_iterator<RandomIterator>& right);
template <class Type, class CharType, class Traits, class Distance>
bool operator!=(const istream_iterator<Type, CharType, Traits, Distance>& left, const istream_iterator<Type, CharType, Traits, Distance>& right);
template <class CharType, class Tr>
bool operator!=(const istreambuf_iterator<CharType, Traits>& left, const istreambuf_iterator<CharType, Traits>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если объекты итератора не равны; false Значение , если объекты итератора равны.
Замечания
Один итератор равен другому, если они адресуют одни и те же элементы в контейнере. Если два итератора указывают на разные элементы в контейнере, то они не равны.
Пример
/// iterator_op_ne.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 1; i < 9; ++i)
{
vec.push_back(i);
}
cout << "The vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
// Initializing reverse_iterators to the last element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin();
cout << "The iterator rVPOS1 initially points to the first "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 != rVPOS2)
{
cout << "The iterators are not equal." << endl;
}
else
{
cout << "The iterators are equal." << endl;
}
rVPOS1++;
cout << "The iterator rVPOS1 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 != rVPOS2)
{
cout << "The iterators are not equal." << endl;
}
else
{
cout << "The iterators are equal." << endl;
}
}
The vector vec is: ( 1 2 3 4 5 6 7 8 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 8.
The iterators are equal.
The iterator rVPOS1 now points to the second element
in the reversed sequence: 7.
The iterators are not equal.
operator==
Проверяет объект итератора в левой части оператора на равенство объекту итератора в правой части.
template <class RandomIterator1, class RandomIterator2>
bool operator==(
const move_iterator<RandomIterator1>& left,
const move_iterator<RandomIterator2>& right);
template <class RandomIterator1, class RandomIterator2>
bool operator==(
const reverse_iterator<RandomIterator1>& left,
const reverse_iterator<RandomIterator2>& right);
template <class Type, class CharType, class Traits, class Distance>
bool operator==(
const istream_iterator<Type, CharType, Traits, Distance>& left,
const istream_iterator<Type, CharType, Traits, Distance>& right);
template <class CharType, class Tr>
bool operator==(
const istreambuf_iterator<CharType, Traits>& left,
const istreambuf_iterator<CharType, Traits>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если объекты итератора равны; false Значение , если объекты итератора не равны.
Замечания
Один итератор равен другому, если они адресуют одни и те же элементы в контейнере. Если два итератора указывают на разные элементы в контейнере, то они не равны.
Первые два оператора-шаблона возвращают значение true, только если left и right хранят один и тот же итератор. Третий оператор-шаблон возвращает значение true, только если left и right хранят один и тот же указатель на поток. Четвертый оператор-шаблон возвращает left.equal (right).
Пример
// iterator_op_eq.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 1; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
// Initializing reverse_iterators to the last element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin();
cout << "The iterator rVPOS1 initially points to the first "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 == rVPOS2)
{
cout << "The iterators are equal." << endl;
}
else
{
cout << "The iterators are not equal." << endl;
}
rVPOS1++;
cout << "The iterator rVPOS1 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 == rVPOS2)
{
cout << "The iterators are equal." << endl;
}
else
{
cout << "The iterators are not equal." << endl;
}
}
The vector vec is: ( 2 4 6 8 10 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 10.
The iterators are equal.
The iterator rVPOS1 now points to the second element
in the reversed sequence: 8.
The iterators are not equal.
operator<
Определяет, верно ли, что объект итератора в левой части оператора меньше объекта итератора в правой части.
template <class RandomIterator>
bool operator<(const reverse_iterator<RandomIterator>& left, const reverse_iterator<RandomIterator>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если итератор в левой части выражения меньше итератора справа от выражения; false Значение
Замечания
Один итератор меньше, чем другой, если он адресует элемент, который находится в контейнере раньше, чем элемент, адресуемый другим сравниваемым итератором. Один итератор не меньше другого, если он обращается либо к тому же элементу, что и другой объект итератора, либо элемент, который возникает позже в контейнере, чем элемент, адресованный другим итератором.
Пример
// iterator_op_lt.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
// Initializing reverse_iterators to the last element
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin();
cout << "The iterators rVPOS1& rVPOS2 initially point to the "
<< "first element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 < rVPOS2)
{
cout << "The iterator rVPOS1 is less than"
<< " the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is not less than"
<< " the iterator rVPOS2." << endl;
rVPOS2++;
cout << "The iterator rVPOS2 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS2 << "." << endl;
if (rVPOS1 < rVPOS2)
{
cout << "The iterator rVPOS1 is less than"
<< " the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is not less than"
<< " the iterator rVPOS2." << endl;
}
}
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterators rVPOS1& rVPOS2 initially point to the first element
in the reversed sequence: 10.
The iterator rVPOS1 is not less than the iterator rVPOS2.
The iterator rVPOS2 now points to the second element
in the reversed sequence: 8.
The iterator rVPOS1 is less than the iterator rVPOS2.
operator<=
Определяет, верно ли, что объект итератора в левой части оператора меньше или равен объекту итератора в правой части.
template <class RandomIterator>
bool operator<=(const reverse_iterator<RandomIterator>& left, const reverse_iterator<RandomIterator>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если итератор в левой части выражения меньше или равен итератору справа от выражения; false Если он больше итератора справа.
Замечания
Один итератор меньше или равен другому, если он адресует либо тот же самый элемент, либо элемент, который находится в контейнере раньше, чем элемент, адресуемый другим сравниваемым итератором. Один итератор больше, чем другой, если он адресует элемент, который находится в контейнере дальше, чем элемент, адресуемый другим сравниваемым итератором.
Пример
// iterator_op_le.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
vector <int>::reverse_iterator rVPOS1 = vec.rbegin() + 1,
rVPOS2 = vec.rbegin();
cout << "The iterator rVPOS1 initially points to the "
<< "second element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
cout << "The iterator rVPOS2 initially points to the "
<< "first element\n in the reversed sequence: "
<< *rVPOS2 << "." << endl;
if (rVPOS1 <= rVPOS2)
{
cout << "The iterator rVPOS1 is less than or "
<< "equal to the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is greater than "
<< "the iterator rVPOS2." << endl;
}
rVPOS2++;
cout << "The iterator rVPOS2 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS2 << "." << endl;
if (rVPOS1 <= rVPOS2)
{
cout << "The iterator rVPOS1 is less than or "
<< "equal to the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is greater than "
<< "the iterator rVPOS2." << endl;
}
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterator rVPOS1 initially points to the second element
in the reversed sequence: 8.
The iterator rVPOS2 initially points to the first element
in the reversed sequence: 10.
The iterator rVPOS1 is greater than the iterator rVPOS2.
The iterator rVPOS2 now points to the second element
in the reversed sequence: 8.
The iterator rVPOS1 is less than or equal to the iterator rVPOS2.
operator>
Определяет, верно ли, что объект итератора в левой части оператора больше объекта итератора в правой части.
template <class RandomIterator>
bool operator>(const reverse_iterator<RandomIterator>& left, const reverse_iterator<RandomIterator>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если итератор в левой части выражения больше итератора справа от выражения; false Значение , если оно меньше или равно итератору справа.
Замечания
Один итератор больше, чем другой, если он адресует элемент, который находится в контейнере дальше, чем элемент, адресуемый другим сравниваемым итератором. Один итератор не больше другого, если он обращается либо к другому элементу, что и другой объект итератора, либо элемент, который возникает ранее в контейнере, чем элемент, адресованный другим итератором.
Пример
// iterator_op_gt.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i) {
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin();
cout << "The iterators rVPOS1 & rVPOS2 initially point to "
<< "the first element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 > rVPOS2)
{
cout << "The iterator rVPOS1 is greater than "
<< "the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is less than or "
<< "equal to the iterator rVPOS2." << endl;
}
rVPOS1++;
cout << "The iterator rVPOS1 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 > rVPOS2)
{
cout << "The iterator rVPOS1 is greater than "
<< "the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is less than or "
<< "equal to the iterator rVPOS2." << endl;
}
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterators rVPOS1 & rVPOS2 initially point to the first element
in the reversed sequence: 10.
The iterator rVPOS1 is less than or equal to the iterator rVPOS2.
The iterator rVPOS1 now points to the second element
in the reversed sequence: 8.
The iterator rVPOS1 is greater than the iterator rVPOS2.
operator>=
Определяет, верно ли, что объект итератора в левой части оператора больше или равен объекту итератора в правой части.
template <class RandomIterator>
bool operator>=(const reverse_iterator<RandomIterator>& left, const reverse_iterator<RandomIterator>& right);
Параметры
left
Объект типа iterator.
right
Объект типа iterator.
Возвращаемое значение
true Значение , если итератор в левой части выражения больше или равен итератору справа от выражения; false Если это меньше итератора справа.
Замечания
Один итератор больше или равен другому, если он адресует либо тот же самый элемент, либо элемент, который находится в контейнере дальше, чем элемент, адресуемый другим сравниваемым итератором. Один итератор меньше, чем другой, если он адресует элемент, который находится в контейнере раньше, чем элемент, адресуемый другим сравниваемым итератором.
Пример
// iterator_op_ge.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin() + 1;
cout << "The iterator rVPOS1 initially points to the "
<< "first element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
cout << "The iterator rVPOS2 initially points to the "
<< "second element\n in the reversed sequence: "
<< *rVPOS2 << "." << endl;
if (rVPOS1 >= rVPOS2)
{
cout << "The iterator rVPOS1 is greater than or "
<< "equal to the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is less than "
<< "the iterator rVPOS2." << endl;
}
rVPOS1++;
cout << "The iterator rVPOS1 now points to the second "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
if (rVPOS1 >= rVPOS2)
{
cout << "The iterator rVPOS1 is greater than or "
<< "equal to the iterator rVPOS2." << endl;
}
else
{
cout << "The iterator rVPOS1 is less than "
<< "the iterator rVPOS2." << endl;
}
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 10.
The iterator rVPOS2 initially points to the second element
in the reversed sequence: 8.
The iterator rVPOS1 is less than the iterator rVPOS2.
The iterator rVPOS1 now points to the second element
in the reversed sequence: 8.
The iterator rVPOS1 is greater than or equal to the iterator rVPOS2.
operator+
Добавляет смещение к итератору и возвращает move_iterator или reverse_iterator с адресом вставленного элемента в новой позиции смещения.
template <class RandomIterator, class Diff>
move_iterator<RandomIterator>
operator+(
Diff _Off,
const move_iterator<RandomIterator>& right);
template <class RandomIterator>
reverse_iterator<RandomIterator>
operator+(
Diff _Off,
const reverse_iterator<RandomIterator>& right);
Параметры
Off
Число позиций, на которое нужно сместить const move_iterator или const reverse_iterator.
right
Итератор для смещения.
Возвращаемое значение
Возвращает сумму right + Off.
Пример
// iterator_op_insert.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
vector <int>::reverse_iterator rVPOS1 = vec.rbegin();
cout << "The iterator rVPOS1 initially points to "
<< "the first element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
vector<int>::difference_type diff = 4;
rVPOS1 = diff + rVPOS1;
cout << "The iterator rVPOS1 now points to the fifth "
<< "element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterator rVPOS1 initially points to the first element
in the reversed sequence: 10.
The iterator rVPOS1 now points to the fifth element
in the reversed sequence: 2.
operator-
Вычитает один итератор из другого и возвращает разницу.
template <class RandomIterator1, class RandomIterator2>
Tdiff operator-(
const move_iterator<RandomIterator1>& left,
const move_iterator<RandomIterator2>& right);
template <class RandomIterator1, class RandomIterator2>
Tdiff operator-(
const reverse_iterator<RandomIterator1>& left,
const reverse_iterator<RandomIterator2>& right);
Параметры
left
Итератор.
right
Итератор.
Возвращаемое значение
Разница между двумя итераторами.
Замечания
Первый оператор-шаблон возвращает left.base() - right.base().
Второй оператор-шаблон возвращает right.current - left.current.
Tdiff определяется типом возвращенного выражения. В противном случае возвращается RandomIterator1::difference_type.
Пример
// iterator_op_sub.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>
int main()
{
using namespace std;
vector<int> vec;
for (int i = 0; i < 6; ++i)
{
vec.push_back(2 * i);
}
cout << "The initial vector vec is: ( ";
for (vector <int>::iterator vIter = vec.begin(); vIter != vec.end(); vIter++)
{
cout << *vIter << " ";
}
cout << ")." << endl;
vector <int>::reverse_iterator rVPOS1 = vec.rbegin(),
rVPOS2 = vec.rbegin();
cout << "The iterators rVPOS1 & rVPOS2 initially point to "
<< "the first element\n in the reversed sequence: "
<< *rVPOS1 << "." << endl;
for (int i = 1; i < 5; ++i)
{
rVPOS2++;
}
cout << "The iterator rVPOS2 now points to the fifth "
<< "element\n in the reversed sequence: "
<< *rVPOS2 << "." << endl;
vector<int>::difference_type diff = rVPOS2 - rVPOS1;
cout << "The difference: rVPOS2 - rVPOS1= "
<< diff << "." << endl;
}
The initial vector vec is: ( 0 2 4 6 8 10 ).
The iterators rVPOS1 & rVPOS2 initially point to the first element
in the reversed sequence: 10.
The iterator rVPOS2 now points to the fifth element
in the reversed sequence: 2.
The difference: rVPOS2 - rVPOS1= 4.