Предположим, я хочу объявить вектор объектов.Я могу сделать это следующим образом -
vector<mynode> nodes;
Но если размер mynode велик, это будет плохо.Поэтому я думаю сделать это следующим образом -
vector<mynode*> nodes;
Но в приведенной выше декларации есть очевидная проблема - я храню адреса, и это совсем не безопасно.Например, если я добавлю объекты в цикл foor -
vector<mynode*> nodes;
for (int i=0; i<10; i++)
{
mynode mn;
nodes.push_back(&mn);
}
Это приведет к ошибкам, поскольку я никогда не могу гарантировать, что содержимое указателя действительно в порядке.
Итак, ярешите использовать это объявление -
vector<mynode&> nodes;
for (int i=0; i<10; i++)
{
mynode mn;
nodes.push_back(mn);
}
это нормально?безопасный?Это дает компиляцию с первой строкой.Пожалуйста, предложите какой-нибудь эффективный способ хранения объектов в векторе.Большое спасибо.