gpt4 book ai didi

C++ 调试断言失败 : map/set iterator not dereferencable

转载 作者:太空狗 更新时间:2023-10-29 21:23:50 26 4
gpt4 key购买 nike

我收到以下调试错误:

Debug Assertion Failed!
Program: Path\To\vc\include\xtree
Line: 237

Expression: map/set iterator not dereferencable

这些代码行:

for(std::map<int,IO::ctcolor>::iterator it = IO::colorTable.begin(); it != IO::colorTable.end();) {
//left out some code here, but even without it doesn't work
cout << "dummy"; //gets printed multiple times while iterating, so the map is not empty
++it;
}

for 循环遍历 IO::colorTable 的所有元素,但在到达末尾时不会停止,我可以在循环内将数据打印到控制台时看到这一点。

编辑: 我刚刚注意到错误发生在我错误地尝试访问 it

的 for 循环之后的行中

最佳答案

我认为问题在于您在没有注意到的情况下在某个地方增加了值,该错误意味着您正在尝试取消引用 end() 迭代器。

看看这个code我相信它与您的非常相似,并且您可以看到它运行良好。

#include <map>
#include <iostream>
using::std::map;
using::std::pair;

class IO
{
private:

class ctcolor
{
private:
char c;
public:
ctcolor(char c){c='c';}
};

map<int,ctcolor> colorTable;
public:
IO(){
for(int i=0;i<10;i++)
{
colorTable.insert(pair<int,IO::ctcolor>(i,'c'));
}
}
void io(){
for(std::map<int,IO::ctcolor>::iterator it = IO::colorTable.begin(); it != IO::colorTable.end();) {
std::cout << "dummy";
++it;}
}

};

int main()
{
IO io;
io.io();
return 0;
}

关于C++ 调试断言失败 : map/set iterator not dereferencable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352761/

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