gpt4 book ai didi

c++ - push_back 对象引用

转载 作者:行者123 更新时间:2023-11-28 07:00:05 30 4
gpt4 key购买 nike

当我看到这段代码时,我想知道它会毫无问题地运行。

对象将通过引用传递,所以实际上它不是它的拷贝。因此,如果您将此引用放入 vector 中并且该对象超出范围,那么它就不再可以访问了。

但确实如此。因此,此方法起作用的唯一原因可能是 push_back() 创建了引用对象的拷贝。这是这个行为的答案吗?

struct struct1 {
int value;
};

std::vector<struct1> testVect;

void pushVect(struct1 & element) {
testVect.push_back(element);
}

void fillVect() {
struct1 s1;
for (int i = 0; i < 10; i++) {
s1.value = i;
pushVect(s1);
}
}

最佳答案

vector 的 push_back 方法负责制作拷贝:来自 C++ reference

Adds a new element at the end of the vector, after its current last element. The content of val is copied (or moved) to the new element.

所以在通话过程中

 estVect.push_back(element);

vector 与拷贝一起使用。因此没有问题。

关于c++ - push_back 对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603980/

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