나는이 주제에 대해 검색하고 있었고, 난이 표준에 배열 []로 변환하는 방법은 여러 가지 : 벡터, 사용 등의 발견에 배열 복사 :에성병 : 벡터
assign(a, a + n)
또는 직접 생성자 :
std::vector<unsigned char> v (a, a + n);
사람들은 그것이 가능 (정정) 인 경우 궁금하고 내 문제를 해결하지만해야 할 일 : 나는 궁금
myvet.resize(10);
memcpy(&myvet[0], buffer, 10);
이 나는 다음과 같은 코드를 가지고 있기 때문에 :
IDiskAccess::ERetRead nsDisks::DiskAccess::Read(std::vector<uint8_t>& bufferRead, int32_t totalToRead)
{
bufferRead.resize(totalToRead);
DWORD totalRead;
ReadFile(mhFile, &bufferRead[0], totalToRead, &totalRead, NULL);
bufferRead.resize(totalRead);
return IDiskAccess::READ_OK;
}
(내가 게시물을 단순화하기 위해 ReadFile을 함수의 오류 처리를 제거한) :
IDiskAccess::ERetRead nsDisks::DiskAccess::Read(std::vector<uint8_t>& bufferRead, int32_t totalToRead)
{
uint8_t* data = new uint8_t[totalToRead];
DWORD totalRead;
ReadFile(mhFile, data, totalToRead, &totalRead, NULL);
bufferRead.resize(totalRead);
bufferRead.assign(data, data + totalRead);
delete[] data;
return IDiskAccess::READ_OK;
}
을 그리고 내가하고 싶습니다.
작동하지만 안전하지 않다는 것을 사과합니다. 나는 벡터에 의해 사용 된 메모리가 연속적이기 때문에 그것이 괜찮다고 믿지만, 나는 이런 식으로 벡터를 사용하는 누군가를 본 적이 없다.
이와 같은 벡터를 사용하는 것이 맞습니까? 다른 더 좋은 옵션이 있습니까?
He *는 크기를 먼저 조정합니다 (함수의 첫 번째 줄 참조). – celtschk
나는 그가 그렇게하지 못한 것을 암시하지는 않았다. 나는 그 중요성을 강조하고있었습니다. – TheBuzzSaw
* 의미가 *있을 수는 없지만 그렇게했을 수도 있습니다. – celtschk