最終更新日時(UTC):
が更新

履歴 編集

function
<inplace_vector>

std::inplace_vector::try_push_back(C++26)

constexpr std::optional<reference> try_push_back(const T& x); // (1) C++26
constexpr std::optional<reference> try_push_back(T&& x);      // (2) C++26

概要

末尾へ要素追加を試みる。容量超過時は例外を送出せず、std::nulloptを返す。

  • (1) : xをコピーして末尾への追加を試みる。
  • (2) : xをムーブして末尾への追加を試みる。

効果

size() < Nの場合、xを末尾に追加する。そうでない場合、何もしない。

戻り値

要素が追加された場合は追加された要素への参照を保持したstd::optional、追加できなかった場合はstd::nulloptを返す。

例外

投げない(Tのコンストラクタが例外を送出する場合を除く)

計算量

定数時間

#include <print>
#include <inplace_vector>

int main()
{
  std::inplace_vector<int, 3> iv = {1, 2, 3};

  auto r1 = iv.try_push_back(4);
  std::println("push_back(4): {}", (r1 ? "success" : "failed"));

  iv.pop_back();
  auto r2 = iv.try_push_back(4);
  std::println("push_back(4): {}", (r2 ? "success" : "failed"));
  std::println("value: {}", *r2);
}

出力

push_back(4): failed
push_back(4): success
value: 4

バージョン

言語

  • C++26

処理系

参照