最終更新日時:
が更新

履歴 編集

function
<tuple>

std::operator<(C++11)

namespace std {
  template<class... TTypes, class... UTypes>
  bool operator<(const tuple<TTypes...>& t,
                 const tuple<UTypes...>& u); // C++11

  template<class... TTypes, class... UTypes>
  bool operator<(const tuple<TTypes...>& t,
                 const tuple<UTypes...>& u); // C++14
}

概要

2つのtupleにおいて、左辺が右辺より小さいかの判定を行う。

要件

  • 2つのtupleの要素数が同じであること。
  • tupleの要素std::get<i>(t)std::get<i>(u)において、すべての要素の比較 std::get<i>(t) < std::get<i>(u) の比較結果がboolに変換可能な型であること。

戻り値

2つのtupleオブジェクト、tuの辞書順比較を行った結果を返す。定義は以下のようになる:

get<i>(t) < get<i>(u) || !(get<i>(u) < get<i>(t)) && get<i+N...>(t) < get<i+N...>(u) ...`

#include <iostream>
#include <tuple>
#include <string>

int main()
{
  std::tuple<int, char, std::string> t1(1, 'a', "hello");
  std::tuple<int, char, std::string> t2(2, 'b', "world");

  std::cout << std::boolalpha;
  {
    bool result = t1 < t2;
    std::cout << result << std::endl;
  }
  {
    bool result = t2 < t1;
    std::cout << result << std::endl;
  }
}

出力

true
false

バージョン

言語

  • C++11

処理系

関連項目

参照