std::empty - cppreference.com
提供: cppreference.com
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
| ヘッダ |
||
| (1) | ||
|
|
(C++17以上) (C++20未満) |
|
|
|
(C++20以上) | |
| (2) | ||
|
|
(C++17以上) (C++20未満) |
|
|
|
(C++20以上) | |
| (3) | ||
|
|
(C++17以上) (C++20未満) |
|
|
|
(C++20以上) | |
指定されたコンテナが空かどうかを返します。
1) c.empty() を返します。
2) false を返します。
3) il.size() == 0 を返します。
引数
| c | - | メンバ関数 empty を持つコンテナ
|
| array | - | 任意の型の配列 |
| il | - | 初期化子リスト |
戻り値
コンテナが要素を持っていなければ true。
ノート
<iterator> がインクルードされた場合に加えて <array>、 <deque>、 <forward_list>、 <list>、 <map>、 <regex>、 <set>、 <span> (C++20以上)、 <string>、 <string_view>、 <unordered_map>、 <unordered_set>、 <vector> のいずれかのヘッダがインクルードされた場合も、 std::empty が利用可能になることが保証されています。
実装例
| 1つめのバージョン |
|---|
template <class C> constexpr auto empty(const C& c) -> decltype(c.empty()) { return c.empty(); } |
| 2つめのバージョン |
template <class T, std::size_t N> constexpr bool empty(const T (&array)[N]) noexcept { return false; } |
| 3つめのバージョン |
template <class E> constexpr bool empty(std::initializer_list<E> il) noexcept { return il.size() == 0; } |
例
#include <iostream> #include <vector> template <class T> void print(const T& container) { if ( !std::empty(container) ) { std::cout << "Elements:\n"; for ( const auto& element : container ) std::cout << element << '\n'; } else { std::cout << "Empty\n"; } } int main() { std::vector<int> c = { 1, 2, 3 }; print(c); c.clear(); print(c); int array[] = { 4, 5, 6 }; print(array); auto il = { 7, 8, 9 }; print(il); }
出力:
Elements: 1 2 3 Empty Elements: 4 5 6 Elements: 7 8 9