std::vector::push_back wykorzystuje kosntruktor kopiujący, ale od c++11 jest też push_back przyjmujące referencje do rwartości (rvalue reference) i z tego możesz skorzystać skoro konstruktor kopiujący jest delete. Najlepiej jakbyś pokazał jak wygląda u ciebie dodawanie do vectora (pokaż linie kodu).
Anyway, jeśli klasa nie ma konstruktora kopiującego, to masz musisz skorzystać z push_back(Typ&&):
//v to vector v.push_back(Klasa()); // od razu podajesz mu rvalue //albo: Klasa k; /* coś robisz z tym obiektem a nastepnie zmuszasz push_back aby potraktował go jako rvalue: */ v.push_back(std::move(k)); // po tym absolutnie już nie ruszaj obiektu k, bo konstruktor przenoszący pozostawił // go w niezdefiniowanym stanie // zakładam, że to sie dzieje w jakiejś funkcji i k jest obiektem lokalnym, który zniknie po wyjściu z funkcji
Drugą możliwością jest skorzystanie z emplace_back również dostępnego od c++11. Emplace back przyjmuje argumenty, które następnie zostaną przekazane do zwykłego konstruktora i emplace_back sama sobie stworzy obiekt na końcu kontenera.
np.:
class A { public: A(int, float, std::string) { } }; std::vector<A> v; v.emplace_back(1, 1.f, "lkfjlsf");