如何初始化值为01重复的向量<bool>?

Mar*_*rty 1 c++ constructor vector

我可以初始化一个vector<bool>以010101 ......等序列开始吗?或者我是否必须用0来初始化它并循环通过并将每个其他值更改为1?

mos*_*ald 7

要扩展@ 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)