Я делаю класс, который имеет функцию, которая объединяет два вектора unique_ptrs. Когда я использую функцию push_back, размер вектора параметров изменяется, и я не знаю почему.
class A: public vector<unique_ptr<int>>{
public:
A& concatenate(A& c);
};
A& A::concatenate(A& c) {
for(int i = 0; i < c.size(); i++) { //this loop never stops
push_back(make_unique<int>()); //this line changes the size of c?
(*this)[(*this).size() - 1] = move(c[i]);
}
return *this;
}
Цикл for не прекращается, потому что каждый раз, когда используется метод push_back, размер c также увеличивается на 1.
Я также подумал использовать resize () перед циклом for, а затем переместить все указатели, но я хочу знать, почему метод push_back меняет другой вектор.