Pio*_*ycz 13 c++ vector bitvector stl-algorithm
在考虑这个问题时,我开始想知道是否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>私人部分的方法.
Leo*_*sky 12
STD是仅头文件库,它随编译器一起提供.您可以自己查看这些标题.对于海湾合作委员会的vector<bool> 阻挠是在stl_bvector.h.它也可能是其他编译器的相同文件.是的,有专门的fill(看近__fill_bvector).