以下是一个使用C++ STL来不复制数据的解决方法的示例代码:
#include
#include
#include
void printVector(const std::vector& vec) {
for (const auto& num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
}
int main() {
std::vector originalVec = {1, 2, 3, 4, 5};
std::vector &refVec = originalVec;
// 使用原始的originalVec打印
std::cout << "Original Vector: ";
printVector(originalVec);
// 排序refVec
std::sort(refVec.begin(), refVec.end());
// 使用原始的originalVec打印,因为refVec和originalVec指向同一个底层数据,所以排序结果也会反映在originalVec上
std::cout << "Sorted Vector: ";
printVector(originalVec);
return 0;
}
在上面的代码中,我们声明了一个原始的vector originalVec
,然后用引用 &refVec
指向了 originalVec
。这样,refVec
和 originalVec
指向了同一个底层数据,而不会发生数据的复制。
我们使用 std::sort()
函数对 refVec
进行排序,由于 refVec
和 originalVec
指向同一个底层数据,所以排序结果也会直接反映在 originalVec
上。最后,我们使用 printVector()
函数打印了原始的 originalVec
和排序后的 originalVec
。
这样,我们就避免了对数据进行复制,而是直接在原始的数据上进行操作。