[英]How to set a range of elements in an stl vector to a particular value?
我有一個布爾值的矢量。 我需要將其元素從第n個設置為第m個到true
。 有沒有使用循環這樣做的優雅方法?
編輯:坦克向所有使用vector<bool>
指出問題的人。 但是,我正在尋找更通用的解決方案,就像jalf給出的解決方案一樣。
algorithm
頭中的std::fill
或std::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.