gpt4 book ai didi

c++ - 队列返回 pair.first 的错误值

转载 作者:行者123 更新时间:2023-11-30 05:18:36 25 4
gpt4 key购买 nike

我有一个奇怪的问题:从队列中弹出(之前​​推送的一对 int s)后,我得到了对的第二个元素的正确值和第一个元素的完全随机值。

例如,如果我按 pair<int, int> = (368, 125)然后我得到对 = (14416384, 125)。

我不能使用自己的 struct {int first, int second}而不是 pair 因为稍后我需要存储这对 int我设置为能够快速找到它们,我不想对应用程序进行重大更改。

你知道怎么解决吗?

代码片段如下所示:

vector<pair<int, int>> objekt;
set<pair<int, int>> przetworzone;
int pointX = m_imgIN.pointX;
int pointY = m_imgIN.pointY;
BYTE currPixel = m_imgIN.m_bitmapObject.GetPixel8(pointX, pointY);

if (currPixel > 0)
{
queue<pair<int, int>> kolejka;
kolejka.push(make_pair(pointX, pointY)); //<- here: pointX=368 and pointY=125

while (kolejka.size() != 0)
{
pair<int, int> p;
p = kolejka.front(); //<- here: p.first=14416384 and p.second=125
kolejka.pop();

if (m_imgIN.m_bitmapObject.GetPixel8(p.first, p.second) > 0)
{
//...

最佳答案

所以你的代码工作正常:http://ideone.com/ainPyU您输入的确切值会被读回。

kolejka 是本地创建的,在您显示的代码中只添加了 1 个元素,然后循环遍历它的内容。除非您没有向我们展示代码,否则这没有意义。我怀疑未显示的代码才是真正导致问题的原因。

因此,在这些行之间发生其他事情的前提下,我建议您越界写入另一个容器并踩踏第一个元素的内容。我会通过在 kolejkafirst 成员中的 1st 元素的地址上设置内存断点来调试它。

关于c++ - 队列返回 pair.first 的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41611941/

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