std:: distance
|
ヘッダー
<iterator>
で定義
|
||
|
template
<
class
InputIt
>
typename
std::
iterator_traits
<
InputIt
>
::
difference_type
|
(constexpr C++17以降) | |
first から last までのホップ数を返します。
InputIt
が
LegacyRandomAccessIterator
でない場合、
last
が
first
から
到達可能
でないとき、動作は未定義です。
InputIt
が
LegacyRandomAccessIterator
である場合、
first
と
last
が互いに到達可能でない場合、動作は未定義です。
目次パラメータ
戻り値first から last まで移動するために必要なインクリメント回数。
計算量線形。
ただし、
実装例実装については libstdc++ および libc++ も参照してください。
例
このコードを実行
#include <iostream> #include <iterator> #include <vector> int main() { std::vector<int> v{3, 1, 4}; std::cout << "distance(first, last) = " << std::distance(v.begin(), v.end()) << '\n' << "distance(last, first) = " << std::distance(v.end(), v.begin()) << '\n'; // 動作は未定義(LWG940まで) static constexpr auto il = {3, 1, 4}; // C++17以降、`distance`はconstexprコンテキストで使用可能 static_assert(std::distance(il.begin(), il.end()) == 3); static_assert(std::distance(il.end(), il.begin()) == -3); } 出力: distance(first, last) = 3 distance(last, first) = -3 不具合報告以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
関連項目
| |||||||||||||||||||||||||||||||||