Основные вопросы: указатели на объекты в unordered_maps (C ++)
Я новичок в программировании на C ++ и был бы признателен за ответы, которые нене предполагаю много предварительных знаний.
Благодаря предложениям здесь ямы создали неупорядоченную карту:
typedef std::tr1::unordered_map hmap;
Данные на этой карте являются указателями на экземпляры класса Strain. Как только эти экземпляры созданы, я создаю для них указатели, а затем добавляю эти указатели в мою хеш-таблицу (hmap StraightTable) и в другой вектор (vector < Напряжение *> liveStrains), например,
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;
Экземпляры класса Strain никогда не удаляются, равно как и указатели на них не удаляются из straTable. Указатели иногда перемещаются между векторами < Напряжение *> liveStrains и вектор < Напряжение *> deadStrains, но однажды в режиме «Стабильный» они остаются на «Стабильном».
Это кошерный? Пока базовые экземпляры никогда не уничтожаются, будут ли добавленные к ним указатели оставаться неизменными?
Также верно, что я всегда смогу получить атрибуты-члены из указателей в straTable, используя, например, для первой записи, I '
hmap::const_iterator itr1 = strainTable.begin();
int id = (itr1->second)->getStrainID();
Я обнаружил, что через некоторое время указатели в моей таблице ссылок указывают на мусор.