在考虑这个问题时,我开始想知道是否std::copy()和/或是std::fill专门的(我真的意味着优化)std::vector<bool>.
这是C++标准所要求的,或者,它是C++ std库供应商的常用方法吗?
简单来说,我想知道以下代码:
std::vector<bool> v(10, false);
std::fill(v.begin(), v.end(), true);
Run Code Online (Sandbox Code Playgroud)
以任何方式更好/不同于:
std::vector<bool> v(10, false);
for (auto it = v.begin(); it != v.end(); ++it) *it = true;
Run Code Online (Sandbox Code Playgroud)
要非常严格 - 可以,可以说:std::fill<std::vector<bool>::iterator>()进入内部表示std::vector<bool>并设置整个字节而不是单个位?我认为交std::fill朋友std::vector<bool>不是图书馆供应商的大问题吗?
[UPDATE]
下一个相关的问题:我可以(或其他任何人)专门研究这样的算法std::vector<bool>,如果不是已经专门化了吗?这是C++标准允许的吗?我知道这将是不可移植的 - 但仅适用于一个选定的std C++库?假设我(或其他任何人)找到了去std::vector<bool>私人部分的方法.