gpt4 book ai didi

c++ - 将对 vector 的引用作为参数传递

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

我知道当你传递一个数组作为参数时,你基本上传递了数组在索引 0 处的地址。然后,硬件知道 int 通常是 4 个字节,因此它可以轻松访问其他元素。我的问题是关于 vector 的。如果我有一个函数

 void bla(std::vector<int> &arr)
{
}

然后它应该传递一个对 vector 的引用,但它会像数组一样发生吗? vector 是使用数组实现的,所以我的假设是当我传递一个引用时,它只是传递第一个元素的地址。对不对?

此外,如果我只是作为 vector 传递,会发生什么情况?它会在堆栈上创建一个拷贝吗?谢谢

最佳答案

std::vector 与原始 C 风格数组非常不同,因此如果您通过引用传递 std::vector没有人能说 std::vector 中第一项的地址就是传递给函数的地址。

std::vector 中有比“原始 C 风格数组”更多的逻辑。

如果您想要 vector 中第一项的地址,您可以使用&v[0]v.data() 获取它。

如果按值传递 vector ,您将获得原始 vector 的拷贝。并且您在函数中对该拷贝所做的所有修改都不会反射(reflect)到原始文件中。

关于c++ - 将对 vector 的引用作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40048557/

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