Portál AbcLinuxu, 4. května 2025 22:54
class A { typedef std::vector< MujObjekt> VectorOfMujObject; typedef std::vector< VectorOfMujObjekt> VectorOfVectorOfMujObject; VectorOfVectorOfMujObject vovomo; public: A() : vovomo(100) // vlozi 100 prvku inicializovanych default constructorem, tedy prazdnych vektoru { vovomo[0].push_back(Z(1, 2, 3)); } };
#include < iostream > #include < string > #include < vector > typedef std::vector < std::string > SVect; typedef std::vector < SVect > VSVect; int main() { std::vector < std::string > v1; v1.push_back("A1"); v1.push_back("B1"); v1.push_back("C1"); std::vector < std::string > v2; v2.push_back("A2"); v2.push_back("B2"); VSVect sv; sv.push_back(v1); sv.push_back(v2); for (VSVect::const_iterator cit = sv.begin(); cit != sv.end(); cit++) { for (SVect::const_iterator icit = cit->begin(); icit != cit->end(); icit++) { std::cout << *icit << " "; } std::cout << std::endl; } return 0; }
vector<vector<C> > vector_of_vectors_of_c;Pokud ale hodlas menit pocet prvku v tom hlavnim vektoru a nepouzivas posledni normu jazyka C++, kde se pri realokaci muze udelat move, tak bych tam dal ukazatele na vektory:
vector<vector<C> *> vector_of_vectors_of_c;A jestli ta trida ma velkou velikost, nebo slozity kopirovani tak bych dal ukazatel i tam
vector<vector<C *> *> vector_of_vectors_of_c;
Protoze napr implementace stl u gcc, alokuje pri realokaci vzdy dvojnasobek pameti a nikdy nezmensuje.Tohle je zrovna vlastnost, která se mi moc nehodí. Potřebuji v každé úrovni vždy vygenerovat větší množství prvků a pak ty pro další fáze nepotřebné promazat. Možná by byla lepší jiná struktura než vektor, jestli třeba
list
nemá paměťově efektivnější implementaci.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.