gpt4 book ai didi

c++ - *(vec.begin() - 1) 应该返回什么?

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:04 25 4
gpt4 key购买 nike

假设我有以下代码:

std::vector<int> test;
test.push_back(10);
test.push_back(20);
test.push_back(30);
printf("%d\n", *(test.begin() - 1));

test.begin() 保证返回之前的迭代器是什么?会一直为0吗?或者这是未定义的行为?

最佳答案

行为将是未定义的。 如果您读取不属于您的内存,没有什么可以阻止您。所以你可以阅读它,但是你无法控制该区域,即谁在向该区域写入?所以行为将是不确定的。
但是如果你尝试在 *(test.begin()-1) 处写入,如果你的操作系统正在保护该区域,你会遇到错误。

关于c++ - *(vec.begin() - 1) 应该返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214877/

25 4 0
文章推荐: javascript - 如何分别检索父元素内子元素前后的 HTML?
文章推荐: javascript - 在列表中的嵌套 ng-repeat 中搜索过滤器并隐藏没有 child 的 parent
文章推荐: javascript - lodash json组对象成本
文章推荐: css - 使用 CSS 将 float
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com