大佬教程收集整理的这篇文章主要介绍了c – 修改vector之后对vector.back()的引用的奇怪行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <vector> #include <iostream> int main() { std::vector<int> vec; vec.push_BACk(0); for (int i = 1; i < 5; i++) { const auto &x = vec.BACk(); std::cout << "Before: " << x << ","; vec.push_BACk(i); std::cout << "After: " << x << std::endl; } return 0; }
代码用g test.cc -std = c 11 -O0编译,结果如下:
Before: 0,After: 0 Before: 1,After: 0 Before: 2,After: 2 Before: 3,After: 3
我期待第二行输出
Before: 1,After: 1
因为x是对向量中的项的引用,不应通过将项附加到向量来修改该项.
但是我现在还没有阅读反汇编代码或进行任何其他调查.此外,我不知道这是否是语言标准中的未定义行为.
我想要解释一下.谢谢.
以上是大佬教程为你收集整理的c – 修改vector之后对vector.back()的引用的奇怪行为全部内容,希望文章能够帮你解决c – 修改vector之后对vector.back()的引用的奇怪行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。