如何将一个范围在STL向量元素的设置为特定值?
-
16-09-2019 - |
题
我有布尔值的向量。我需要从第n个至第m到true
设置其元件。有一种优雅的方式做到这一点,而不使用循环?
编辑:坦克所有那些谁指出,使用vector<bool>
的问题。然而,我正在寻找一种更通用的解决方案,如通过jalf给出的一个。
解决方案
在std::fill
头应该做的伎俩std::fill_n
或algorithm
。
// 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 ::矢量你可能想在的本文通过香草萨特。
不隶属于 StackOverflow