gpt4 book ai didi

c++ - 看不到通过引用对 vector 的最后一个元素执行操作的效果

转载 作者:搜寻专家 更新时间:2023-10-31 01:29:52 24 4
gpt4 key购买 nike

<分区>

看来我并不完全理解 C++ 引用的具体工作原理。尝试运行以下代码段:

#include <vector>
#include <iostream>

int main() {
std::vector<int> test{1,2,3};
int& ref = test.back();
auto lambda = [&ref, &test](){
std::cout << "inside lambda " << ref << std::endl;
ref += 1;
for (auto&v : test) { std::cout << v << " "; }
};

lambda(); lambda(); lambda();
test.push_back(5);
lambda(); lambda(); lambda();
}

得到这个结果:

inside lambda 3                                                                                                                                                                       
1 2 4
inside lambda 4
1 2 5
inside lambda 5
1 2 6
inside lambda 6
1 2 6 5
inside lambda 7
1 2 6 5
inside lambda 8
1 2 6 5

为什么在 push_back 完成后, vector 元素都没有递增?ref 从这一刻起指向哪里?

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