名前空間
変種
操作

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

提供: cppreference.com
< cpp‎ | utility‎ | tuple
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
std::tuple
メンバ関数
非メンバ関数
operator==operator!=operator<operator<=operator>operator>=operator<=>
(C++20未満)(C++20未満)(C++20未満)(C++20未満)(C++20未満)(C++20)
推定ガイド(C++17)
ヘルパークラス
 
ヘッダ <tuple> で定義
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(1) (C++11以上)
(C++14以上ではconstexpr)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(2) (C++11以上)
(C++14以上ではconstexpr)
template< class... TTypes, class... UTypes >

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

                const tuple<UTypes...>& rhs );
(3) (C++11以上)
(C++14以上ではconstexpr)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(4) (C++11以上)
(C++14以上ではconstexpr)
template< class... TTypes, class... UTypes >

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

                const tuple<UTypes...>& rhs );
(5) (C++11以上)
(C++14以上ではconstexpr)
template< class... TTypes, class... UTypes >

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

                 const tuple<UTypes...>& rhs );
(6) (C++11以上)
(C++14以上ではconstexpr)

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)

[編集] 関連項目