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

履歴 編集

function
<ranges>

std::ranges::filter_view::iterator::iter_move(C++20)

friend constexpr range_rvalue_reference_t<V>
  iter_move(const iterator& i)
    noexcept(noexcept(ranges::iter_move(i.current_))); // (1) C++20

概要

イテレータの要素を移動する。

効果

以下と等価:

return ranges::iter_move(i.current_);

#include <iostream>
#include <ranges>
#include <vector>
#include <string>

int main() {
  std::vector<std::string> v = {"apple", "banana", "cherry", "date"};
  auto is_long = [](const std::string& s) { return s.size() > 5; };

  std::ranges::filter_view fv{v, is_long};
  auto it = fv.begin();

  // iter_moveで要素をムーブ
  std::string s = iter_move(it);
  std::cout << s << std::endl; // banana

  // ムーブ後の元要素は空になる
  std::cout << std::boolalpha << v[1].empty() << std::endl; // true
}

出力

banana
true

バージョン

言語

  • C++20

処理系