Tôi đang sử dụng một thư viện bên ngoài, tại một số điểm, cho tôi một con trỏ thô tới một mảng các số nguyên và kích thước.
Bây giờ tôi muốn sử dụng std::vector
để truy cập và sửa đổi các giá trị này, thay vì truy cập chúng bằng các con trỏ thô.
Dưới đây là một ví dụ rõ ràng giải thích điểm:
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
}
Sản lượng dự kiến:
1
2
3
4
5
Lý do là tôi cần áp dụng các thuật toán từ <algorithm>
(sắp xếp, thay đổi các yếu tố, v.v.) trên dữ liệu đó.
Mặt khác thay đổi kích thước của vector rằng sẽ không bao giờ được thay đổi, vì vậy push_back
, erase
, insert
không cần phải làm việc trên vectơ.
Tôi có thể xây dựng một vectơ dựa trên dữ liệu từ thư viện, sử dụng sửa đổi vectơ đó và sao chép dữ liệu trở lại thư viện, nhưng đó sẽ là hai bản sao hoàn chỉnh mà tôi muốn tránh vì tập dữ liệu có thể rất lớn.
std::vector
việc.
sort(arrayPointer, arrayPointer + elementCount);
.
std::vector_view
, phải không?