Podczas wywoływania funkcji składowej insert
na std::vector
, czy będzie ona reserve
przed "przesunięciem" nowych elementów? Mam na myśli czy standardowa gwarancja jest taka, czy nie?Czy std :: vector :: wstawić rezerwę z definicji?
Innymi słowy, należy zrobić to tak:
std::vector<int> a{1,2,3,4,5};
std::vector<int> b{6,7,8,9,10};
a.insert(a.end(),b.begin(),b.end());
lub tak:
std::vector<int> a{1,2,3,4,5};
std::vector<int> b{6,7,8,9,10};
a.reserve(a.size()+b.size());
a.insert(a.end(),b.begin(),b.end());
lub innym lepszym rozwiązaniem?
Może to odpowiedzieć na Twoje pytanie: http://stackoverflow.com/questions/2208293/what-jest-najwykle-przejdź-do-suń-przejdź-przejdź-do-przedstawicielem -another –
To zależy od tego, czy iteratory są iteratorami wejściowymi, czy silniejszymi. Na wszystko, co jest silniejsze, można uzyskać liczbę z "odległością". To QoI, ale jakakolwiek przyzwoita implementacja nie powinna zająć więcej niż raz. –
Obie implementacje 'libstdC++' i 'libC++' rezerwują miejsce dla całej sekwencji naraz, jeśli podano co najmniej forward iteratory. –