Пространства имён
Варианты
Действия

operator==,!=,<,<=,>,>=(std::tuple)

Материал из cppreference.com
< cpp‎ | utility‎ | tuple

 
 
 
std::tuple
Функции-члены
tuple::tuple
tuple::operator=
tuple::swap
Функции, не являющиеся членами
make_tuple
tie
forward_as_tuple
None
operator=
operator!=
operator<
operator<=
operator>
operator>=
std::swap
get
Вспомогательные классы
Оригинал:
Helper classes
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
tuple_size
tuple_element
uses_allocator
ignore
 
Определено в заголовочном файле <tuple>
template< class... TTypes, class... UTypes >

bool operator==( const tuple<TTypes...>& lhs,

                 const tuple<UTypes...>& rhs );
(1) (начиная с C++11)
template< class... TTypes, class... UTypes >

bool operator!=( const tuple<TTypes...>& lhs,

                 const tuple<UTypes...>& rhs );
(2) (начиная с C++11)
template< class... TTypes, class... UTypes >

bool operator<( const tuple<TTypes...>& lhs,

                const tuple<UTypes...>& rhs );
(3) (начиная с C++11)
template< class... TTypes, class... UTypes >

bool operator<=( const tuple<TTypes...>& lhs,

                 const tuple<UTypes...>& rhs );
(5) (начиная с C++11)
template< class... TTypes, class... UTypes >

bool operator>( const tuple<TTypes...>& lhs,

                const tuple<UTypes...>& rhs );
(4) (начиная с C++11)
template< class... TTypes, class... UTypes >

bool operator>=( const tuple<TTypes...>& lhs,

                 const tuple<UTypes...>& rhs );
(6) (начиная с C++11)
1-2)
Сравнивает каждый элемент кортежа lhs с соответствующим элемент кортежа rhs.
Оригинал:
Compares every element of the tuple lhs with the corresponding element of the tuple rhs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
3-6)
Сравнивает lhs и rhs лексикографически, то есть сравнивает первые элементы, если они эквивалентны, сравниваются вторые элементы, если таковые имеют эквивалента, сравнивает третьего элемента, и так далее.
Оригинал:
Compares lhs and rhs lexicographically, that is, compares the first elements, if they are equivalent, compares the second elements, if those are equivalent, compares the third elements, and so on.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Все операторы сравнения короткое замыкание, они не имеют доступа к элементам кортежа рамки того, что необходимо определить результат сравнения.
Оригинал:
All comparison operators are short-circuited; they do not access tuple elements beyond what is necessary to determine the result of the comparison.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры

lhs, rhs -
кортежей для сравнения
Оригинал:
tuples to compare
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

1)
true если std::get<i>(lhs) == std::get<i>(rhs) для всех в [0, sizeof...(Types)), в противном случае false. За два пустых возвращает кортежи true.
Оригинал:
true if std::get<i>(lhs) == std::get<i>(rhs) for all i in [0, sizeof...(Types)), otherwise false. For two empty tuples returns true.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

2) !(lhs == rhs)

3)
(bool)(std::get<0>(lhs) < std::get<0>(rhs)) || (!(bool)(std::get<0>(rhs) < std::get<0>(lhs)) && lhstail < rhstail), где lhstail является левая без его первый элемент, и rhstail является правая без его первый элемент. За два пустых кортежей, возвращается false.
Оригинал:
(bool)(std::get<0>(lhs) < std::get<0>(rhs)) || (!(bool)(std::get<0>(rhs) < std::get<0>(lhs)) && lhstail < rhstail), where lhstail is lhs without its first element, and rhstail is rhs without its first element. For two empty tuples, returns false.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

4) !(lhs < rhs)

5) rhs < lhs

6) !(rhs < lhs)

[править] Пример

Потому что оператор <определен для кортежей, контейнеры кортежей могут быть отсортированы .
Оригинал:
Because operator< is defined for tuples, containers of tuples can be sorted.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

#include <iostream>
#include <tuple>
#include <vector>
#include <algorithm>
int main()
{
    std::vector<std::tuple<int, std::string, float>> v;
    v.emplace_back(2, "baz", -0.1);
    v.emplace_back(2, "bar", 3.14);
    v.emplace_back(1, "foo", 100.1);
    std::sort(v.begin(), v.end());
 
    for(auto p: v) {
        std::cout << "(" << std::get<0>(p) << ", " << std::get<1>(p)
                  << ", " << std::get<2>(p) << ")\n";
    }
}

Вывод:

(1, foo, 100.1)
(2, bar, 3.14)
(2, baz, -0.1)

[править] См. также