簡體   English   中英

如何將stl向量中的元素范圍設置為特定值?

[英]How to set a range of elements in an stl vector to a particular value?

我有一個布爾值的矢量。 我需要將其元素從第n個設置為第m個到true 有沒有使用循環這樣做的優雅方法?

編輯:坦克向所有使用vector<bool>指出問題的人。 但是,我正在尋找更通用的解決方案,就像jalf給出的解決方案一樣。

algorithm頭中的std::fillstd::fill_n應該可以解決問題。

 // 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); 

Bool傳染媒介。 讓我的脊椎發抖。

你看過:std :: bitset(對於固定大小的標志集)boost :: dynamic_bitset(對於動態大小標志集)

連續設置最后8位:

#include <bitset>
#include <iostream>


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

    std::cout << flags;
}  

不是我所知道的。 您可以嘗試使用其中一個算法,如std :: for_each,std :: replace或std :: fill來隱藏您循環遍歷元素范圍的事實,但循環您將是。

鑒於你說你正在使用布爾值向量 - 如果你正在使用專門化std :: vector,你可能想閱讀Herb Sutter本文中的 “bool怎么樣”一節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM