Обойти семантику копирования в C ++

Пожалуйста, рассмотрите этот код:

class A
{

};

int main()
{
    std::vector<A> test;
    test.push_back(A());
}

Конструктор и деструктор будут вызваны дважды, также память будет выделена дважды, и объект будет скопирован, что теперь не только потенциально плохо сказывается на производительности, но и может привести к ошибкам во время выполнения, особенно если в деструкторе происходит некоторая очистка. Способ, которым я обычно обхожу это, состоит в том, чтобы просто создать вместо него вектор указателей:

std::vector<A*> test;
test.push_back(new A());

Мой вопрос в два раза, это обычная практика и это хорошая практика? Или есть лучший способ? Если это окажется обманом, пожалуйста, дайте мне знать, и я закрою вопрос, но я ничего не смог найти при поиске.

Ответы на вопрос(1)

Ваш ответ на вопрос