operator+<small>(std::counted_iterator)</small>
| <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> |
(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">[
#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つのイテレータアダプタ間の距離を計算する (関数テンプレート) |
| 末尾までの符号付き距離を計算する (関数テンプレート) |