У меня есть ситуация, когда объектам необходимо хранить указатели на другие объекты того же типа в том же контейнере. Я буду хранить эти объекты в папке std::vector
. Строительство как-то затягивает (по умолчанию строительство невозможно) и было бы очень хорошо знать, где будут храниться остальные объекты, но нет необходимости обращаться к ним. Следовательно, я хотел бы также создать вектор указателей на элементы перед их созданием.
Процедура аналогична этой (мой класс сложнее, чем int):
std::vector<int> v;
v.reserve(10);
std::vector<*int> ptr_v;
for(int i(0); i<10; ++i)
ptr_v.emplace_back(&v[i]) //[] will not do boundary checks
//now fill v and also use ptr_v
Основной вопрос, если это хорошая идея - даже если я могу гарантировать, что вектор не перераспределяется?