std:: end, std:: cend
|
ヘッダーで定義
<array>
|
||
|
ヘッダーで定義
<deque>
|
||
|
ヘッダーで定義
<flat_map>
|
||
|
ヘッダーで定義
<flat_set>
|
||
|
ヘッダーで定義
<forward_list>
|
||
|
ヘッダーで定義
<inplace_vector>
|
||
|
ヘッダーで定義
<iterator>
|
||
|
ヘッダーで定義
<list>
|
||
|
ヘッダーで定義
<map>
|
||
|
ヘッダーで定義
<regex>
|
||
|
ヘッダーで定義
<set>
|
||
|
ヘッダーで定義
<span>
|
||
|
ヘッダーで定義
<string>
|
||
|
ヘッダーで定義
<string_view>
|
||
|
ヘッダーで定義
<unordered_map>
|
||
|
ヘッダーで定義
<unordered_set>
|
||
|
ヘッダーで定義
<vector>
|
||
|
template
<
class
C
>
auto end ( C & c ) - > decltype ( c. end ( ) ) ; |
(1) |
(C++11以降)
(C++17以降 constexpr) |
|
template
<
class
C
>
auto end ( const C & c ) - > decltype ( c. end ( ) ) ; |
(2) |
(C++11以降)
(C++17以降 constexpr) |
|
template
<
class
T,
std::
size_t
N
>
T * end ( T ( & array ) [ N ] ) ; |
(3) |
(C++11以降)
(C++14以降 noexcept) (C++14以降 constexpr) |
|
template
<
class
C
>
constexpr
auto
cend
(
const
C
&
c
)
noexcept
(
/* 下記参照 */
)
|
(4) | (C++14以降) |
指定された範囲の終端(すなわち、最後の要素の次の要素)へのイテレータを返します。
目次 |
パラメータ
| c | - |
end
メンバ関数を持つコンテナまたはビュー
|
| array | - | 任意の型の配列 |
戻り値
例外
オーバーロード
クラスおよび列挙型に対して、適切な
end()
メンバ関数を公開していないが反復可能な場合、
end
のカスタムオーバーロードを提供できます。以下のオーバーロードは標準ライブラリによって既に提供されています:
|
(C++11)
|
std::endを特殊化
std::end
(関数テンプレート) |
|
(C++11)
|
std::endを特殊化
std::end
(関数テンプレート) |
|
範囲ベースforループのサポート
(関数) |
|
|
範囲ベースforループのサポート
(関数) |
swap
の使用(
Swappable
で説明)と同様に、ジェネリックな文脈における
end
関数の典型的な使用法は、
using
std
::
end
;
end
(
arg
)
;
と等価であり、これによりユーザー定義型に対する
ADL
で選択されたオーバーロードと標準ライブラリの関数テンプレートが同じオーバーロード集合に現れるようになります。
template<typename Container, typename Function> void for_each(Container&& cont, Function f) { using std::begin; auto it = begin(cont); using std::end; auto end_it = end(cont); for (; it != end_it; ++it) f(*it); }
|
実引数依存の名前探索
によって発見された
|
(C++20以降) |
注記
非配列オーバーロードは、厳密に C :: end ( ) の動作を反映します。メンバー関数が適切な実装を持たない場合、その効果は予想外のものとなる可能性があります。
std::cend
は、メンバおよび非メンバの範囲アクセスの統一のために導入されました。関連項目:
LWG issue 2128
。
C
が浅いconstビューの場合、
std::cend
は変更可能なイテレータを返す可能性があります。この動作は一部のユーザーにとって予期しないものです。関連資料:
P2276
および
P2278
も参照してください。
例
#include <algorithm> #include <iostream> #include <vector> int main() { std::vector<int> v = {3, 1, 4}; if (std::find(std::begin(v), std::end(v), 5) != std::end(v)) std::cout << "Found a 5 in vector v!\n"; int w[] = {5, 10, 15}; if (std::find(std::begin(w), std::end(w), 5) != std::end(w)) std::cout << "Found a 5 in array w!\n"; }
出力:
Found a 5 in array w!
関連項目
|
(C++11)
(C++14)
|
コンテナまたは配列の先頭を指すイテレータを返す
(関数テンプレート) |
|
(C++20)
|
範囲の終端を示すセンチネルを返す
(カスタマイゼーションポイントオブジェクト) |
|
(C++20)
|
読み取り専用範囲の終端を示すセンチネルを返す
(カスタマイゼーションポイントオブジェクト) |