ฉันใช้ไลบรารี่ภายนอกซึ่งในบางครั้งจะให้ตัวชี้แบบดิบแก่อาร์เรย์ของจำนวนเต็มและขนาด
ตอนนี้ฉันต้องการที่จะใช้std::vector
ในการเข้าถึงและแก้ไขค่าเหล่านี้ในสถานที่แทนที่จะเข้าถึงพวกเขาด้วยตัวชี้แบบดิบ
นี่คือตัวอย่าง articifial ที่อธิบายถึงจุด:
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
ใช่มั้ย