kopiowanie tablicy do vektora

0

Witam,

czy mozna szybciej (w sensie obciazenia systemu :)) niz w ponizszy sposob dolaczyc do wektora tablice?

char t[1024] ;
vector<char> v ;

copy(t, t + 1024, back_inserter(v)) ;

0

mozna np. zminimalizowac ilosc realokacji pamieci:

char t[1024] ;
vector<char> v ;

v.reserve(v.size() + 1024);   //mialobyc: RESIZE a nie reserve
copy(t, t + 1024, back_inserter(v)) ; 

a takze mozna jeszcze uzyc faktu, ze specyfikacja vector'a mowi, ze ma on utrzymywac jednlity blok pamieci, a to pozwala zrobic cos czego szybkosci juz raczej nie przeskoczysz, a mianowicie:

char t[1024] ;
vector<char> v ;

v.reserve(v.size() + 1024);   //i tu tez.. sorry!
memcpy((&v.back())+1, t, 1024);

ale uwaga: to ostatnie zadziala tylko gdy jest to wektor POD'ow (int, char, struct{int,int,float} itp, nic bardziej zlozonego niz typy proste), inacej tez zadziala.. ale sie mozna zdziwic ostro

0

ale uwaga: to ostatnie zadziala tylko gdy jest to wektor POD'ow (int, char, struct{int,int,float} itp, nic bardziej zlozonego niz typy proste), inacej tez zadziala.. ale sie mozna zdziwic ostro

to ostatnie mi nie dziala ale jakby zadzialal to skad v.size() bedzie wiedziec jaki jest rozmiar jak uzyjemy memcpy?

0

Tam zamiast reserve powinno być resize

0

auajć, oczywiscie ze resize.. reserve tylko przygotowuje wewnetrzny obszar, nie dostepny z zewnatrz nijak

1 użytkowników online, w tym zalogowanych: 0, gości: 1