名前空間
変種
操作

operator+<small>(std::counted_iterator)</small>

From cppreference.com
 
 
イテレータライブラリ
イテレータのコンセプト
イテレータのプリミティブ
アルゴリズムのコンセプトとユーティリティ
間接呼び出し可能コンセプト
共通アルゴリズム要件
(C++20)
(C++20)
(C++20)
ユーティリティ
(C++20)
イテレータアダプタ
Rangeアクセス
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
<span class="kw1">friend</span> <span class="kw4">constexpr</span> counted_iterator operator<span class="sy2">+</span><span class="br0">(</span>

    <a href="https://ja.cppreference.dev/w/cpp/iterator/iter_t"><span class="kw2893">std::<span class="me2">iter_difference_t</span></span></a><span class="sy1"></span>I<span class="sy1"></span> n, <span class="kw4">const</span> counted_iterator<span class="sy3">&</span> x <span class="br0">)</span>

        requires <a href="https://ja.cppreference.dev/w/cpp/iterator/random_access_iterator"><span class="kw2886">std::<span class="me2">random_access_iterator</span></span></a><span class="sy1"></span>I<span class="sy1"></span><span class="sy4">;</span>
(C++20以降)

<span class="t-c"><span class="mw-geshi cpp source-cpp">n</span></span>だけ進められたイテレータアダプタを返します。<span class="t-c"><span class="mw-geshi cpp source-cpp">n</span></span>が<span class="t-c"><span class="mw-geshi cpp source-cpp">x</span></span>に記録された長さを超える場合(つまり、<span class="t-c"><span class="mw-geshi cpp source-cpp">x + n</span></span>の結果が未定義の動作になる場合)は、動作は未定義です。

この関数は、通常の<a href="/w/cpp/language/unqualified_lookup" title="cpp/language/unqualified lookup">修飾されていない</a>または<a href="/w/cpp/language/qualified_lookup" title="cpp/language/qualified lookup">修飾されている</a>検索からは見えず、std::counted_iterator<I>が引数に関連付けられたクラスである場合にのみ<a href="/w/cpp/language/adl" title="cpp/language/adl">引数依存の名前探索</a>によって見つけることができます。

目次

<span class="editsection">[
n - イテレータをインクリメントする位置の数
x - インクリメントするイテレータアダプタ

<span class="editsection">[

<span class="t-c"><span class="mw-geshi cpp source-cpp">x + n</span></span>に等しいイテレータアダプタ。

<span class="editsection">[
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
 
int main()
{
    std::vector v{0, 1, 2, 3, 4, 5};
    std::counted_iterator<std::vector<int>::iterator> p{v.begin() + 1, 4};
    std::cout << "*p:" << *p << ", count:" << p.count() << '\n';
    std::counted_iterator<std::vector<int>::iterator> q{2 + p};
    std::cout << "*q:" << *q << ", count:" << q.count() << '\n';
 
    std::list l{6, 7, 8, 9};
    std::counted_iterator<std::list<int>::iterator> r{l.begin(), 3};
    std::cout << "*r:" << *r << ", count:" << r.count() << '\n';
//  auto s{2 + r}; // error: the underlying iterator does
                   // not model std::random_access_iterator
}

出力

*p:1, count:4
*q:3, count:2
*r:6, count:3

<span class="editsection">[
counted_iteratorを進める、またはデクリメントする
(public member function) [編集]
(C++20)
2つのイテレータアダプタ間の距離を計算する
(関数テンプレート) [編集]
末尾までの符号付き距離を計算する
(関数テンプレート) [編集]

"<a href="https://ja.cppreference.dev/mwiki/index.php?title=cpp/iterator/counted_iterator/operator%2B&oldid=159841">https://ja.cppreference.dev/mwiki/index.php?title=cpp/iterator/counted_iterator/operator%2B&oldid=159841</a>" から取得
English 日本語 中文(简体) 中文(繁體)