gpt4 book ai didi

c++ - 为什么在 "For"和 "While"之间得到不同的结果?

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

所以,我正在做一个检测点坐标的项目。

我从 std::vector<cv::Point> dots 中提取检测到的坐标并将每个 x 和 y 坐标存储到 std::vector<int> dotsXstd::vector<int> dotsY . (我知道我可以改用 dots.xdots.y,但这不是我想要的)

每当我想打印输出时,我都会在 for 之间得到不同的结果循环和一个 while循环显示值 vector 。例如:

检测到的X坐标是15,20,50,检测到的Y坐标是2,10,20。

如果我使用 for循环:

for(int x=0;x < dotsX.size();x++)
{
std::cout << dotsX[x] << std::endl;
}

输出是相同的:15,20,50。

但是,如果我使用 while循环:

int x=0;
while(dotsX[x])
{
std::cout << dotsX[x] << std::endl;
x++;
}

输出很奇怪:15、20、50、32。其中总是有一个附加值(例如值 32,有时是 10201 或 4 等)。

我不知道为什么会这样。

如有任何帮助,我们将不胜感激。谢谢

最佳答案

第二个示例具有未定义的行为,因为它总是以访问 dotsX 的越界元素而告终。

要使其与 for 循环相同,将其更改为:

while(x < dots.size())
{
// ...
}

另请注意,C++ 有更多惯用的方法来遍历容器。特别是,C++11 具有基于范围的 for 循环,这使您无法弄乱索引或迭代器:

for (int x : dotsX) { std::cout << x << std::endl; }

关于c++ - 为什么在 "For"和 "While"之间得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760461/

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