Вы можете сделать это точно так же. Для всех целей рассматривайте vector<int>
как нормальную переменную (например, int
), поэтому вы можете написать:
class foo{
vector <int> vec;
int someint;
public:
foo(number n, vector<int> v): someint(n), vec(v){}
}
Он будет копироваться изнутри и снаружи, и это может означать много копий памяти. Вот почему для таких больших объектов используется передача по ссылке (либо по указателю, либо по ссылке). Например, чтобы вернуть вектор:
vector<int> const& the_vector()
{ return inner_vector; } // no copy
и конструктор также будет foo(number n, vector<int> const& v)
. Кроме того, если внутренне вам не нужно хранить копию вектора, вы можете использовать указатель или ссылку на этот вектор в качестве члена, вместо самой копии вектора, то есть класса:
class foo{
vector <int>& vec;
int someint;
public:
foo(int n, vector<int>& v): someint(n), vec(v){}
}
(обратите внимание на ссылки). То же самое с указателями.