Mar*_*rty 1 c++ constructor vector
我可以初始化一个vector<bool>以010101 ......等序列开始吗?或者我是否必须用0来初始化它并循环通过并将每个其他值更改为1?
要扩展@ zmbq的答案,请使用std::generate_n如下:
std::vector<bool> v;
v.reserve(desired_size);
bool b = true;
std::generate_n(std::back_inserter(v), desired_size, [&b]() { return (b = !b); });
Run Code Online (Sandbox Code Playgroud)
std::generate如果vector已经有一个尺寸,你会使用.
如果你没有C++ 11编译器......
std::vector<bool> v;
v.reserve(desired_size);
struct GenFn
{
GenFn(bool b = true)
: b(b)
{
}
bool operator()() const
{
return (b = !b);
}
private:
bool b;
};
std::generate_n(std::back_inserter(v), desired_size, GenFn());
Run Code Online (Sandbox Code Playgroud)