我正在使用一个外部库,它在某个时刻给我一个原始指针,指向一个整数数组和一个大小。
现在,我想使用 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
不需要在该矢量上工作。
我可以根据库中的数据构造一个向量,修改这个向量,然后将数据复制回库中,但这将是两个完整的副本,因为数据集可能非常大,我希望避免这样做。