抱歉,标题令人困惑,不知道该为标题加上什么。
我有这个功能:
static void smooth5(IntVector*& v)
{
IntVector* tmp = new IntVector();
for(int i=0; i<v->size(); i+=2)
tmp->push_back(v->at(i));
delete v;
v = tmp;
}
我主要是这样做的:
IntVector* v = new IntVector();
v->push_back(0);
v->push_back(1);
v->push_back(2);
v->push_back(3);
smooth5(v);
//print the contents of v
当我打印v的内容时,输出为0 2。
但是我不明白
IntVector*& v
真正意味着v是指向堆上对象的指针。有人可以解释一下吗?
最佳答案
IntVector*&
声明对指针的引用。将此用作函数参数允许smooth5
修改调用者的v
副本。
它类似于将指针传递给IntVector**
指针,但更具可读性。
在您的示例中,smooth5
删除调用方的IntVector
,并将其指向其tmp
变量。
关于c++ - 指向引用/地址参数的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14649235/