最終更新日時:
が更新

履歴 編集

<queue>

std::priority_queue::推論補助(C++17)

namespace std {
  template <class Compare, class Container>
  priority_queue(Compare, Container)
    -> priority_queue<typename Container::value_type, Container, Compare>; // (1)

  template <class InputIterator,
            class Compare = less<typename iterator_traits<InputIterator>::value_type>,
            class Container = vector<typename iterator_traits<InputIterator>::value_type>>
  priority_queue(InputIterator, InputIterator, Compare = Compare(), Container = Container())
    -> priority_queue<
         typename iterator_traits<InputIterator>::value_type,
         Container, Compare>;                                              // (2)

  template <class Compare, class Container, class Allocator>
  priority_queue(Compare, Container, Allocator)
    -> priority_queue<typename Container::value_type, Container, Compare>; // (3)
}

概要

std::priority_queueクラステンプレートの型推論補助。

  • (1) : 比較関数オブジェクトと、元となるコンテナから推論する
  • (2) : イテレータ範囲、比較関数オブジェクト、元となるコンテナから推論する
  • (3) : 比較関数オブジェクトと、元となるコンテナ、アロケータから推論する

#include <queue>
#include <type_traits>

int main()
{
  std::vector v = {1, 2, 3};

  // (1)
  // 比較関数オブジェクトと、元となるコンテナから推論
  std::priority_queue pque1 {std::less<int>(), v};
  static_assert(std::is_same_v<decltype(pque1), std::priority_queue<int>>);

  // (2)
  // イテレータ範囲から推論 (デフォルトのコンテナを使用する)
  std::priority_queue pque2 {v.begin(), v.end()};
  static_assert(std::is_same_v<decltype(pque2), std::priority_queue<int>>);
}

出力

バージョン

言語

  • C++17

処理系

関連項目

参照