Portál AbcLinuxu, 4. prosince 2025 00:34
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.