나는 불법의 벡터를 가지고있다. n 번째부터 m 번째까지 요소를 true
으로 설정해야합니다. 루프를 사용하지 않고 이것을 수행하는 우아한 방법이 있습니까?stl 벡터의 요소 범위를 특정 값으로 설정하는 방법은 무엇입니까?
편집 : vector<bool>
을 사용하여 문제를 지적한 모든 사람들에게 탱크 : 그러나, 나는 더 일반적인 솔루션을 찾고 있었는데, 예를 들어 jalf가 제공 한 솔루션과 같습니다.
나는 불법의 벡터를 가지고있다. n 번째부터 m 번째까지 요소를 true
으로 설정해야합니다. 루프를 사용하지 않고 이것을 수행하는 우아한 방법이 있습니까?stl 벡터의 요소 범위를 특정 값으로 설정하는 방법은 무엇입니까?
편집 : 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 :: for_each, std :: replace 또는 std :: fill과 같은 알고리즘 중 하나를 사용하여 요소 범위를 반복하면서 사실을 숨길 수 있습니다.
전문 지식 표준 벡터를 사용한다고 가정하면 this article by Herb Sutter의 "what about bool"섹션을 읽는 것이 좋습니다.
bool의 벡터. 내 척추가 떨리는 것을 보냅니다.
#include <bitset>
#include <iostream>
int main()
{
std::bitset<12> flags;
flags |= 0x0FF;
std::cout << flags;
}
: 표준 : 비트 세트 연속 바닥 8 개 비트를 설정 (동적 크기 플래그 세트) 부스트 :: dynamic_bitset
(고정 된 크기 플래그 세트의) :
당신이 봤어감사합니다. 나는 이미 벡터
난 항상 두건 아래에 루프가 있다는 것을 알고 있습니다. 나는 구문 적으로 우아한 방법을 숨기려고했다. – Dima
그런데 벡터에 대한 경고를 보내 주셔서 감사합니다. –
Dima