Вы можете перенести содержимое одного вектора в другой, используя swap
.
std::vector<int> a, b;
fillVector(a);
a.swap(b);
Чаще всего (как указано выше) это используется для замены свежего (пустого) контейнера заполненным. Это требование более плавно удовлетворяется ссылками на rvalue в C ++ 1x, к которым вы, возможно, уже имеете доступ в зависимости от того, какой компилятор C ++ вы используете.
Что бы вы ни делали, не поддавайтесь искушению использовать неконстантную ссылку при написании конструктора копирования (или оператора присваивания). Это дорога в ад, a.k.a. auto_ptr
. Это заманчиво в вашем случае:
MyClass(vector<vector<int> > &m)
{
myMatrix.swap(m);
}
Но крайне удивительно, что конструктор копирования изменил бы переданный ему объект («изменить» - это вежливый способ описать его полное удаление!) Вместо этого предоставьте функцию-член с другим именем, чтобы было ясно, что он будет измените переданный ему параметр.