Пожалуйста, рассмотрите этот код:
class A
{
};
int main()
{
std::vector<A> test;
test.push_back(A());
}
Конструктор и деструктор будут вызываться дважды, также память будет выделена дважды, и объект будет скопирован, теперь это не только потенциально вредно для производительности, но также может привести к ошибкам во время выполнения, особенно если там происходит очистка деструктор. То, как я обычно обошел это, - это просто создать вектор указателей:
std::vector<A*> test;
test.push_back(new A());
Мой вопрос в два раза, это обычная практика, и это хорошая практика? Или есть лучший способ? Если это окажется обманом, пожалуйста, дайте мне знать, и я закрою вопрос, но я не нашел ничего в поиске.