名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | utility‎ | tuple
 
 
 
std::tuple
メンバ関数
非メンバ関数
operator==operator!=operator<operator<=operator>operator>=
推定ガイド(C++17)
ヘルパークラス
 
ヘッダ <tuple> で定義
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(1) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                           const tuple<UTypes...>& rhs );
(1) (C++14およびそれ以降)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(2) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                           const tuple<UTypes...>& rhs );
(2) (C++14およびそれ以降)
template< class... TTypes, class... UTypes >

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

                const tuple<UTypes...>& rhs );
(3) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                          const tuple<UTypes...>& rhs );
(3) (C++14およびそれ以降)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(4) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                           const tuple<UTypes...>& rhs );
(4) (C++14およびそれ以降)
template< class... TTypes, class... UTypes >

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

                const tuple<UTypes...>& rhs );
(5) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                          const tuple<UTypes...>& rhs );
(5) (C++14およびそれ以降)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(6) (C++11およびそれ以降)
(C++14以前)
template< class... TTypes, class... UTypes >

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

                           const tuple<UTypes...>& rhs );
(6) (C++14およびそれ以降)

1-2) タプル lhs のすべての要素を、タプル rhs の対応する要素と比較します。

3-6) lhsrhs を辞書的に比較します。 つまり、第1要素を比較し、それが等しければ第2要素を比較し、それが等しければ第3要素を比較し、以下同様です。

すべての比較演算子は短絡評価を行います。 比較の結果を決定するために必要な部分を超えるタプルの要素はアクセスされません。

目次

[編集] 引数

lhs, rhs - 比較するタプル

[編集] 戻り値

1) [0, sizeof...(Types)) のすべての I について std::get<i>(lhs) == std::get<i>(rhs) であれば true、そうでなければ false を返します。 2つの空タプルの比較に対しては true を返します。

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 は las から最初の要素を除いたもので、 rhstail は rhs から最初の要素を除いたものです。 2つの空タプルの比較に対しては false を返します。

4) !(rhs < lhs) を返します。

5) rhs < lhs を返します。

6) !(lhs < rhs) を返します。

[編集]

operator< がタプルに対して定義されているため、タプルのコンテナはソートすることができます。

#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)

[編集] 関連項目