我有布尔值的向量。我需要从第n个至第m到true设置其元件。有一种优雅的方式做到这一点,而不使用循环?

编辑:坦克所有那些谁指出,使用vector<bool>的问题。然而,我正在寻找一种更通用的解决方案,如通过jalf给出的一个。

有帮助吗?

解决方案

std::fill头应该做的伎俩std::fill_nalgorithm

 // set m elements, starting from myvec.begin() + n to true
std::fill_n(myvec.begin() + n, m, true);

// set all elements between myvec.begin() + n and myvec.begin() + n + m to true
std::fill(myvec.begin() + n, myvec.begin() + n + m, true); 

其他提示

布尔矢量。 发送颤抖了我的脊椎。

你有没有看:     的std ::位集(对于固定尺寸标记套)     升压::来,dynamic_bitset(动态尺寸标记套)

设置的低8位在一排:

#include <bitset>
#include <iostream>


int main()
{
    std::bitset<12>      flags;
    flags   |= 0x0FF;

    std::cout << flags;
}  

不给我所知。你可以尝试使用像的std :: for_each的算法之一的std ::更换或std ::填写隐瞒事实,你遍历要素范围,但循环您会。

既然你说你正在使用布尔值的向量 - 如果您使用的是专业化的std ::矢量你可能想在的本文通过香草萨特

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top