Zdravím, v mojom kóde si vytváram vlastnú triedu a potom globálny kontajner vector "1", ktorý obsahuje inštancie tej triedy. potom si vytvorím metodu tej tiedy, v ktorej si vytvorím lokálny kontajner vector "2", ktorý obsahuje pointre na inštancie triedy. a ked sa pokúšam vkladať do vectoru "1" skrz vector "2" tak mi to začne prepisovat iné položky vo vectore "2" a nechápem prečo. skúšal som uz všetky možné spôsoby vkladania, a vždy to urobý presne to isté. ďakujem vám za pomoc.
Fórum › C / C++
Kontajner vector
#1 kaja
Ked vkladas do vectoru prvky a vector nema alokovany dostatok miesta, tak moze alokovat nove pole do ktoreho presunie povodne prvky (nevolaju sa ziadne copy constructory a ani destructory). Vysledokom je ze ak si mal pointre alebo iteratory na prvky vectora, tak budu vsetky tieto pointre ukazovat do neplatneho miesta.
Bolo by ale lepsie ak sem das ukazku tvojho kodu (orezanu o nepotrebne casti).
#3 vitamin
aha, mohlo by to byť tym, ďakujem, teraz viem ze uchovavať si ukazatele na prvky vectora je blbosť;
ale aj tak by to nemalo robiť;
tu mam kus kodu:
class Funkcia
{
public:
int CisloFunkcie;
std::vector<Typy> vracia;
std::vector<Typy> argumenty;
std::vector<Funkcia*> obsahuje;
unsigned int KolkyArgument;
int HodnotaFunkcie;
vector<Funkcia*> vyhodnotC(vector<Funkcia*> argumentiky);
};
vector<Funkcia> ukladaciPriestor;
v maine mam potom:
cout<<endl<<",prvy argument: "<<argumentiky[2]->HodnotaFunkcie<<endl;//tu mi to vypise spravnu hodnotu
ukladaciPriestor.push_back(*(argumentiky[1]));
cout<<endl<<",prvy argument: "<<argumentiky[2]->HodnotaFunkcie<<endl;//tu mi tovypise prepisanu
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Použití sort na vector<vector> — založil Radek
Kontajner, ktory.... — založil Tom@sQo
Vytvorte šablónový kontajner smerníkov v C++ v MS VS2008 — založil Laska
Moderátoři diskuze