Podstawowe pytania: wskaźniki do obiektów w nieuporządkowanych mapach (C ++)

Jestem nowym użytkownikiem programowania w C ++ i byłbym bardzo wdzięczny za odpowiedzi, które nie zakładają wcześniejszej wiedzy.

Dzięki sugestiom tutaj stworzyłem nieuporządkowaną mapę:

typedef std::tr1::unordered_map<std::string, Strain*> hmap;

Dane na tej mapie są wskaźnikami do instancji klasy Szczep. Gdy tylko te instancje zostaną utworzone, tworzę do nich wskaźniki, a następnie dodaję te wskaźniki do mojej tablicy mieszania (hmap strainTable) i do innego wektora (wektor <Strain *> liveStrains), np.

string MRCA;
for ( int b = 0; b < SEQ_LENGTH; b++ ) {
 int randBase = rgen.uniform(0,NUM_BASES); 
 MRCA.push_back( BASES[ randBase ] );
}
Strain * firstStrainPtr;
firstStrainPtr = new Strain( idCtr, MRCA, NUM_STEPS );
liveStrains.push_back( firstStrainPtr ); 
strainTable[ MRCA ]= firstStrainPtr;

Instancje klasy Szczep nigdy nie są usuwane, ani wskaźniki do nich nie są usuwane ze stołu szczepów. Wskaźniki od czasu do czasu poruszają się między wektorem <Odkształcenie *> żywe odkształcenia a wektorem <Odkształcenie *> martwe Odkształcenia, ale po włączeniu Stołu naprężenia pozostają na Stole naprężenia.

Czy to jest koszerne? Dopóki podstawowe instancje nigdy nie zostaną zniszczone, czy dodane do nich wskaźniki pozostaną nienaruszone?

Czy to również słuszne, że zawsze powinienem móc uzyskać atrybuty członków ze wskaźników w tabeliTransfer, używając np. Pierwszego wpisu,

 hmap::const_iterator itr1 = strainTable.begin();
 int id = (itr1->second)->getStrainID();

Znajduję to po chwili, wskazuje w moim punkcie TableTable na śmieci.

questionAnswers(2)

yourAnswerToTheQuestion