imagine have 40 huge deques each storing data of user-defined type. 40 isn't many, deques huge (hence why i've elected use deques on vectors). question if want container these 40 deques, should container vector or deque?
if opt vector contain huge deques make vector huge in memory, or elements of vector point deques? if containing vector becomes huge result of storing 40 huge deques need use deques instead avoid contiguous memory-related problems ran when opted use deques user-defined type containers?
example;
class myclass { // lots of data members resulting in large class object } int main(){ std::deque<myclass> foo; for(int i=0, i<10000000, i++){ myclass classobject; foo.push_back(classobject); } }
we have deque 1000000 elements containing our class objects. imagine create 40 of these deques.
now if want container these 40 deques should this;
std::vector< std::deque<myclass> > bar
or should this;
std::deque< std::deque<myclass> > bar
do elements of vector point deques
to question asked: no. question meant: yes.
in vector<deque<t>>
vector elements actual deque
objects themselves, not pointers them. std::deque
objects pretty thin, since in turn have pointers double-ended data structure content of deque resides.
your 40 datasets not stored contiguous each other in memory using vector<deque<t>>
(or vector<vector<t>>
) -- when inner container allocation-free std::array
data of containers stored together.
if on other hand want vector elements pointers deque
objects, can use vector<unique_ptr<deque<t>>>
.
Comments
Post a Comment