Mam std::vector<std::vector<double>>
i chciałbym dodać kilka elementów na koniec tego, więc to był mój próbny:umieszczanie wektora z listy inicjatora
std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});
ale to nie kompiluje natomiast dodaje zrobi:
std::vector<double> vector({0,0});
Dlaczego element emplace_back nie może skonstruować elementu na tej pozycji? Albo co robię źle?
Dzięki za pomoc.
dzięki, ale mam jeszcze jedno pytanie do tego: Dlaczego to działa na drugim przykładzie? Ponieważ kompilator ma podobne informacje o typie (emplace_back spodziewa się uzyskać argumenty dla konstruktora std :: vector i tak jest w drugim przykładzie) –
m47h
Ponieważ w drugim przykładzie wywołujesz konstruktora wektora, który może obsłużyć listę inicjalizatora bezpośrednio. – marli
Skutecznie nie zajmujesz miejsca, ale po prostu naciskasz już skonstruowany element, zamiast budować wektor w miejscu. –