【发布时间】:2019-11-17 02:32:08
【问题描述】:
我想传递v 向量,这样每次调用函数one(..) 时它就不会被复制。但我做不到。
谁能帮我摆脱困境?
int n; // global variable
void one(vector <int >(&v)[n])
{
v[0][0] = 1;
}
int main()
{
cin >> n;//n=1
vector <int > v[n];
v[0].push_back(9);
one(v);
cout << v[0][0];
}
错误信息:
prog.cpp:5:32: error: variable or field ‘one’ declared void
void one(vector <int > (&v)[n]){
^
prog.cpp:5:27: error: ‘v’ was not declared in this scope
void one(vector <int > (&v)[n]){
^
prog.cpp: In function ‘int main()’:
prog.cpp:17:6: error: ‘one’ was not declared in this scope
one(v);
^
【问题讨论】:
-
你并没有真正的向量向量。那将拼写为
std::vector<std::vector<int>>。 -
你拥有的是一个向量数组(但要注意variable-length arrays 并不是真正的 C++ 的一部分)。为什么不像通常传递数组一样传递它,使用指针(如
vector<int>* v)以及数组的长度?或者确实是一个实际的向量向量?
标签: c++ function c++11 pass-by-reference stdvector