0
의 값을 변경하는 가장 효율적인 방법I이 비트 세트 내의 비트의 범위의 값을 변경하는 낮은 복잡도로 효율적인 방법이 필요 STD 비트의 범위 : 비트 세트
bitset<1000000> bs;
및 예를 들어 100에서 500까지의 값을 TRUE로 설정해야합니다.
가장 낮은 복잡도로이를 수행하는 가장 빠른 방법은 무엇입니까?
루프를 사용하면 충분하지 않습니다.
의 값을 변경하는 가장 효율적인 방법I이 비트 세트 내의 비트의 범위의 값을 변경하는 낮은 복잡도로 효율적인 방법이 필요 STD 비트의 범위 : 비트 세트
bitset<1000000> bs;
및 예를 들어 100에서 500까지의 값을 TRUE로 설정해야합니다.
가장 낮은 복잡도로이를 수행하는 가장 빠른 방법은 무엇입니까?
루프를 사용하면 충분하지 않습니다.
에 대한 루프 평범한는 가장 쉽고 빠른 식으로 : 불행하게도
std::bitset<1000000> bs;
for (unsigned i = start, stop = start + n; i != stop; ++i)
bs.set(i);
:
bs
의 크기를 주어진 마스크 작업은/이동이 옵션을 선택하지 않습니다합니다 (예 : in bitset, can i use "to_ulong" for a specific range of bits?)bitset
의 인터페이스는 범위/하위 블록 (예 : What is the performance of std::bitset?)을 지원하지 않습니다. 동일한 제한이 boost::dynamic_bitset에 있습니다.또한 std::bitset
가 iterators 제공되지 않는 것을 고려, 그래서는 <algorithm>
라이브러리의 기능을 사용할 수 없습니다.
성능이 중요한 경우 ad-hoc 구현을 고려해 볼 수 있습니다.
SO가 코드 작성 서비스가 아니기 때문에이 질문을 닫지 않으려 고 투표했습니다. 노력을 보여주십시오. – EdChum
하지만 코드 작성을 요청하지 않습니다! –
@EbramShehata 아마도 여러 시도를 제공하고 어떤 것이 더 효율적인지 볼 수 있습니다. – Mine