Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::common_iterator<I,S>::common_iterator

      From cppreference.com
      <cpp‎ |iterator‎ |common iterator
       
       
      Iterator library
      Iterator concepts
      Iterator primitives
      Algorithm concepts and utilities
      Indirect callable concepts
      Common algorithm requirements
      (C++20)
      (C++20)
      (C++20)
      Utilities
      (C++20)
      Iterator adaptors
      Range access
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++11)(C++14)
      (C++14)(C++14)  
      (C++17)(C++20)
      (C++17)
      (C++17)
       
       
      constexpr common_iterator() requiresstd::default_initializable<I>=default;
      (1)(since C++20)
      constexpr common_iterator( I i);
      (2)(since C++20)
      constexpr common_iterator( S s);
      (3)(since C++20)
      template<class I2,class S2>

      requiresstd::convertible_to<const I2&, I>&&
               std::convertible_to<const S2&, S>

      constexpr common_iterator(const common_iterator<I2, S2>& x);
      (4)(since C++20)

      Constructs a new iterator adaptor, effectively initializes the underlyingstd::variant<I, S> member objectvar to hold anI (iterator) orS (sentinel) object.

      1) Default constructor. Default-initializesvar. After construction,var holds a value-initializedI object.Operations on the resulting iterator adaptor have defined behavior if and only if the corresponding operations on a value-initializedI also have defined behavior.
      2) After construction,var holds anI object move-constructed fromi.
      3) After construction,var holds anS object move-constructed froms.
      4) After construction,var holds anI orS object initialized from theI2 orS2 held byx.var, ifx.var holds that alternative, respectively. The behavior is undefined ifx is in an invalid state, that is,x.var.valueless_by_exception() is equal totrue.

      [edit]Parameters

      i - iterator to adapt
      s - sentinel to adapt
      x - iterator adaptor to copy

      [edit]Example

      Run this code
      #include <algorithm>#include <iostream>#include <iterator>#include <numeric>#include <vector> int main(){std::vector v{3,1,4,1,5,9,2}; using CI=std::common_iterator<std::counted_iterator<std::vector<int>::iterator>,std::default_sentinel_t>;    CI unused;// (1)    CI start{std::counted_iterator{std::next(begin(v)), ssize(v)-2}};// (2)    CI finish{std::default_sentinel};// (3)    CI first{start};// (4)    CI last{finish};// (4) std::copy(first, last,std::ostream_iterator<int>{std::cout," "});std::cout<<'\n'; std::common_iterator<std::counted_iterator<std::ostream_iterator<double>>,std::default_sentinel_t>            beg{std::counted_iterator{std::ostream_iterator<double>{std::cout,";  "},5}},            end{std::default_sentinel};std::iota(beg, end,3.1);std::cout<<'\n';}

      Output:

      1 4 1 5 93.1;  4.1;  5.1;  6.1;  7.1;

      [edit]See also

      assigns anothercommon_iterator
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/iterator/common_iterator/common_iterator&oldid=159275"

      [8]ページ先頭

      ©2009-2026 Movatter.jp