어느 시점에서 정수 및 크기 배열에 대한 원시 포인터를 제공하는 외부 라이브러리를 사용하고 있습니다.
이제 std::vector
원시 포인터로 값을 액세스하지 않고 해당 값에 액세스하고 수정하는 데 사용하고 싶습니다 .
요점을 설명하는 명확한 예는 다음과 같습니다.
size_t size = 0;
int * data = get_data_from_library(size); // raw data from library {5,3,2,1,4}, size gets filled in
std::vector<int> v = ????; // pseudo vector to be used to access the raw data
std::sort(v.begin(), v.end()); // sort raw data in place
for (int i = 0; i < 5; i++)
{
std::cout << data[i] << "\n"; // display sorted raw data
}
예상 출력 :
1
2
3
4
5
그 이유는 <algorithm>
해당 데이터에 알고리즘 (정렬, 스왑 요소 등) 을 적용해야하기 때문입니다 .
그 벡터의 크기를 변경 반면이 변경되지 않을 것이다에, 그래서 push_back
, erase
, insert
그 벡터에 대한 작업에 필요하지 않습니다.
라이브러리의 데이터를 기반으로 벡터를 구성하고 해당 벡터를 수정하고 데이터를 라이브러리에 다시 복사하는 것이 가능하지만 데이터 세트가 실제로 클 수 있으므로 피하고 싶은 완전한 사본 두 개입니다.
std::vector
작동 하지 않습니다 .
sort(arrayPointer, arrayPointer + elementCount);
.
std::vector_view
이 아닌가?