📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| 100行目: | 100行目: | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
vv[i].push_back(d); | vv[i].push_back(d); | ||
</syntaxhighlight> | |||
<br><br> | |||
== サイズの確認 == | |||
==== 空かどうかを確認 ==== | |||
std::vectorクラスが空かどうかを確認する場合、いくつかの方法が存在する。<br> | |||
<br> | |||
* <code>empty</code>メソッドを使用する。(推奨) | |||
*: コードの意図が明確である。 | |||
*: 多くの実装では、<u>O(1)</u>の時間複雑度で動作する。 | |||
*: 他のSTLコンテナでも同様に使用できる。 | |||
<syntaxhighlight lang="c++"> | |||
std::vector<int> vec; | |||
if (vec.empty()) { | |||
std::cout << "Vector is empty" << std::endl; | |||
} | |||
else { | |||
std::cout << "Vector is not empty" << std::endl; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
* <code>size</code>メソッドを使用する。 | |||
*: ただし、emptyメソッドの方がベクトルが空かどうかを確認する意図をより明確に表現することができる。 | |||
<syntaxhighlight lang="c++"> | |||
std::vector<int> vec; | |||
if (vec.size() == 0) { | |||
std::cout << "Vector is empty" << std::endl; | |||
} | |||
else { | |||
std::cout << "Vector is not empty" << std::endl; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
* ベクトルの開始と終了イテレータを比較する。 | |||
<syntaxhighlight lang="c++"> | |||
std::vector<int> vec; | |||
if (vec.begin() == vec.end()) { | |||
std::cout << "Vector is empty" << std::endl; | |||
} | |||
else { | |||
std::cout << "Vector is not empty" << std::endl; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
* <code>std::ranges::empty</code>メソッドを使用する。(C++20以降) | |||
*: この方法は、std::vectorクラスだけでなく、他の範囲 (range) に対しても同様に使用できるため、より汎用的である。 | |||
<syntaxhighlight lang="c++"> | |||
#include <ranges> | |||
std::vector<int> vec; | |||
if (std::ranges::empty(vec)) { | |||
std::cout << "Vector is empty" << std::endl; | |||
} | |||
else { | |||
std::cout << "Vector is not empty" << std::endl; | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||