Usually, though, you don't want to pass large objects such as vectors by value, instead you generally want to pass by reference. Passing by value requires a copy, which might be computationally expensive:
// pass by reference (if the funciton is going to to modify the vector)
void by_ref( vector< vector<yourtype> >& v )
{
if(v[0][1] == foo)
Etc();
}
// pass by const reference (if the function is not going to / shouldn't change it)
void by_const_ref( const vector< vector<yourtype> >& v )
{
if(v[0][1] == foo)
Etc();
}
//-----------------------------------
// alternatively you can typedef your vector to improve clarity and reduce typing:
typedef vector< vector<yourtype> > vector2d;
// these functions are the same as the above, just using the typedef
void by_ref(vector2d& v) { }
void by_const_ref(const vector2d& v) { }