저는 비트의 벡터를 가지고 있습니다. 그리고 그것을 다른 벡터로 복사하고 싶습니다. (간단히 말하자면, 다른 벡터의 시작 부분으로 말입니다.) 각 바이트 내의 비트 정렬이 변경되기 때문에 모든 비트가 첫 번째 요소뿐만 아니라 일부 방향으로 이동 (또는 오히려 회전) 될 필요가 있습니다.비트 벡터에 대한 memcpy()와 유사한 함수?
void *memcpy_bits(
char* destination,
char* source,
size_t offset_into_source_in_bits,
size_t num_bits_to_copy);
그리고 그 데이터는 바이트 그래서 엔디안 문제에 저장되지 않으며, 하위 비트는 벡터에 처음 온 :
는가정 명확성을 위해, 서명이입니다. 다른 가정을 수용하기 위해 서명을 좀 더 복잡하게 만들 수 있지만 지금은 그렇게 생각하지 마십시오.
그래서,
- 는 (x86 또는 x86_64의 CPU가 내 말에)이 작업을 수행하는 일부 하드웨어 지원이 있습니까?
- 이 기능의 일부 표준/관용적/널리 사용되는 구현이 있습니까?
'std :: vector'전문 분야를 보셨습니까? 이터레이터를 지원하는 비트 기반의 벡터이므로, 예를 들어'std :: copy()'를 사용할 수 있어야합니다. –
@RemyLebeau :하지만 모든 C++ 라이브러리 구현에서 기대했던 것처럼이 전문화 기술을 신뢰할 수 있습니까? 그리고 원시 난 비트 벡터를 새로운 std :: vector으로 작성하면 난해한 할당 자 템플릿 코드를 쓰지 않아도됩니까? –
einpoklum
예, 신뢰할 수 있습니다. 그리고 요점은 왜 수동 벡터 구현을 사용하고 대신 벡터을 사용하지 않겠습니까? –