비슷한 유연성을 제공하는 표준 C++ 11 솔루션이 있습니까? 현재 나는 좋은 오래된 무효 * 크기를 사용하는 경향이 있습니다.
다른 사람이 관리하는 자체 메모리 또는 랩 메모리를 관리 할 수있는 컨테이너를 제공하는 표준 C++ 11 솔루션이 없습니다.
QByteArray
(몇 개의 파일)을 복사하고 라이선스 조건에 허용되면 프로젝트와 함께 묶을 수 있습니다.
그렇지 않으면 모든 요소에 대해 연속 된 저장소가있는 컨테이너에서만 작업하려는 경우 const void*
및 size_t
인수가 가장 적합하며 가장 휴대하고 적응할 수 있습니다. 필요에 따라 편리한 과부하를 제공 할 수 있습니다. 예 : 어떤 용기 불연속 보관소 심지어을 지원하기
HashType calculateHash(const void*, size_t);
template <typename T> HashType calculateHash(const T& container) {
static_assert(sizeof(typename T::value_type) == 1, "value_type must be byte-sized");
assert(&container[container.size()-1] == &container[0]+container.size());
return calculateHash(&container[0], container.size());
}
는베이스 calculateHash
는 범위를 가지고, 전체 컨테이너 해싱 과부하를 제공 할 수있다.
template <typename I>
HashType calculateHash(I start, I const end) {
HashType hash;
for (; start != end; ++start)
hash.update(*start);
return hash;
}
template <typename C>
HashType calculateHash(const C& container) {
using std::begin;
using std::end;
return calculateHash(begin(container), end(container));
}
[STL 컨테이너] (http://en.cppreference.com/w/cpp/container)에는 (부호없는) 문자 배열을 저장할 수 있습니다. –
@Raw N : 깊은 복사없이 포인터와 크기 (또는 C 문자열)에서'vector '를 어떻게 초기화 할 수 있습니까? –
Silicomancer
'myVector.assign (pointer, pointer + size)'아마도? 약 7 명의 [다른 생성자] (http://en.cppreference.com/w/cpp/container/vector/vector)도 있습니다. –