Chciałbym mieć coś podobnego do std :: vector C++, gdzie podstawowe obiekty są niezmienne. Mogę więc dodać elementy typu push_back(), aby dodać je do wektora, itd. Rzeczywiste std :: vector utrzymuje tablicę poniżej tego, która jest większa niż rozmiar wektora, wypełniona domyślnymi obiektami skonstruowanymi, a kiedy push_back(), robi to przypisanie do elementu w tablicy. Moje niezmienne obiekty nie mają domyślnego konstruktora, a przypisanie jest operacją mutowania, więc to też się kończy.Zmienny kontener z niezmiennymi obiektami w C++
Potrafię wykonać vector<boost::optional<T>>
, ale jest to niechlujny interfejs, ponieważ chcę tylko wstawiać prawidłowo skonstruowane obiekty do wektora i usuwać je tylko z wektora.
Myślałem, że doładowanie ma coś takiego, ale nie mogłem go znaleźć. Czy coś takiego istnieje?
Przynajmniej w C++ 11 wektory działają tak, jak chcesz. Możesz użyć 'emplace_back()'. –
Czy potrafisz przechowywać inteligentne wskaźniki do rzeczywistych niezmiennych obiektów w twoim wektorze? – shuttle87
Sposób, w jaki opisujesz 'wektor' nie pasuje dokładnie jak działa. Czy twój typ ma konstruktory przesuwania i/lub kopiowania? –
hvd