memory - Should I use a deque or vector to store huge deques in C++? -


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