代码之家  ›  专栏  ›  技术社区  ›  Dima

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

  •  17
  • Dima  · 技术社区  · 16 年前

    我有一个布尔向量。我需要将其元素从第n个到第m个设置为 true

    编辑:感谢所有指出使用问题的人 vector<bool> 然而,我在寻找一个更通用的解决方案,就像jalf给出的那样。

    3 回复  |  直到 16 年前
        1
  •  48
  •   Stack Overflow is garbage    16 年前

    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); 
    
        2
  •  6
  •   Loki Astari    16 年前

    bool的向量。 让我脊背发凉。

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

    将底部8位设置为一行:

    #include <bitset>
    #include <iostream>
    
    
    int main()
    {
        std::bitset<12>      flags;
        flags   |= 0x0FF;
    
        std::cout << flags;
    }  
    
        3
  •  3
  •   Timo Geusch    16 年前

    假设你说你使用的是布尔值的向量——如果你使用std::vector的专业化,你可能想读一下 this article by Herb Sutter .

    推荐文章