vector
は要素の長さが0であれば真を返します。v.empty()
とv.begin() == v.end()
が同じ結果になるので当たり前ですが、初期化子リストを代入するとどうなるのだろうと気になったので。
いつもの書き方
# include <vector>
# include <iostream>
# include <iomanip>
using namespace std;
int main()
{
vector<int> v1;
vector<int> v2 = {};
vector<int> v3 = {0};
wcout << boolalpha << v1.empty() << endl; // true
wcout << boolalpha << v2.empty() << endl; // true
wcout << boolalpha << v3.empty() << endl; // false
return 0;
}
清書版
代入演算子を伴わないリスト初期化type var {};
とwcout
の既定フラグ設定wcout.setf
を使用しています。
# include <vector>
# include <iostream>
# include <iomanip>
using namespace std;
int main()
{
vector<int> v1;
vector<int> v2{};
vector<int> v3{0};
auto fmtflags = wcout.setf(wcout.boolalpha);
wcout << v1.empty() << endl; // true
wcout << v2.empty() << endl; // true
wcout << v3.empty() << endl; // false
wcout.setf(fmtflags);
return 0;
}