gpt4 book ai didi

c++ - 为什么 vector 返回会丢失一些值?

转载 作者:行者123 更新时间:2023-11-30 02:34:09 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com