Bir noktada bana tamsayılar dizisi ve bir boyut için ham bir işaretçi veren harici bir kütüphane kullanıyorum.
Şimdi std::vector
bu değerlere ham işaretçilerle erişmek yerine yerinde erişmek ve değiştirmek için kullanmak istiyorum .
İşte konuyu açıklayan yapay bir örnek:
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
}
Beklenen çıktı:
1
2
3
4
5
Nedeni <algorithm>
(sıralama, takas öğeleri vb.) Algoritmaları bu verilerde uygulamak gerekir.
Bu vektörün boyutunu değiştirmek Öte yandan değiştirilemez asla günü, böylece push_back
, erase
, insert
o vektör üzerinde çalışmaya gerek yoktur.
Kütüphanedeki verilere dayalı bir vektör oluşturabilirim, bu vektörde değişiklik yapmayı ve verileri tekrar kütüphaneye kopyalamayı kullanabilirim, ancak veri seti gerçekten büyük olabileceğinden kaçınmak istediğim iki tam kopya olurdu.
std::vector
.
sort(arrayPointer, arrayPointer + elementCount);
.
std::vector_view
, değil mi?