int main(int argc, char argv)
{
int myarray[] = {1, 2, 3, 5};
std::vector<int> array(myarray, myarray + 4);
std::vector<int> *p = testvector(array);
std::vector<int>::const_iterator it;
for(it=p->begin(); it != p->end(); ++ it)
{
printf("%d ", *it);
}
return 0;
}
std::vector<int> *testvector(std::vector<int> array)
{
return &array;
}
以上是我的测试代码;它返回 0 0 3 5 而不是 1 2 3 5 有什么问题
最佳答案
看std::vector<int> *testvector(std::vector<int> array)
小心。这是对输入参数 array
进行深层复制 .
返回的指针将悬挂一次array
超出范围。取消引用该指针的行为将未定义。这就是您的程序行为异常的原因。
有趣的是,如果你写了std::vector<int>& array
作为参数(即由 reference 传递)那么这会起作用,因为您将返回指向 main
中定义的 vector 的指针!不过这段代码非常会很脆弱。
关于c++ - 为什么 vector 返回会丢失一些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34738986/