मैं एक बाहरी पुस्तकालय का उपयोग कर रहा हूं जो किसी बिंदु पर मुझे पूर्णांक और आकार के एक कच्चे सूचक को देता है।
अब मैं 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
, क्या आप नहीं हैं?