如何将stl向量中的元素范围设置为特定值?

Dim*_*ima 14 c++ stl vector variable-assignment

我有一个布尔值的矢量.我需要将其元素从第n个设置为第m个到第m个true.有没有使用循环这样做的优雅方法?

编辑:坦克给所有指出使用问题的人vector<bool>.但是,我正在寻找一种更通用的解决方案,就像jalf给出的解决方案一样.

jal*_*alf 43

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); 
Run Code Online (Sandbox Code Playgroud)


Mar*_*ork 5

Bool传染媒介.让我的脊椎发抖.

你看过:std :: bitset(对于固定大小的标志集)boost :: dynamic_bitset(对于动态大小标志集)

连续设置最后8位:

#include <bitset>
#include <iostream>


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

    std::cout << flags;
}  
Run Code Online (Sandbox Code Playgroud)