Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对std::set的迭代不会结束_C++ - Fatal编程技术网

C++ 对std::set的迭代不会结束

C++ 对std::set的迭代不会结束,c++,C++,今天我试着打印一组元素,它们进入了一个无限循环。 当我试图获取集合的大小时,它返回了正确的值,即8 代码是这样的 std::cout << "size of set is " << myset.size(); for(it=myset.begin();it!=myset.end();it++) std::cout << "value is : " << *it; std::cout所有STL容器返回的.end()迭代

今天我试着打印一组元素,它们进入了一个无限循环。 当我试图获取集合的大小时,它返回了正确的值,即8

代码是这样的

     std::cout << "size of set is " << myset.size();
     for(it=myset.begin();it!=myset.end();it++)
     std::cout << "value is : " << *it;
std::cout所有STL容器返回的
.end()
迭代器指向容器末尾的一个,取消引用(
*iterator
)会导致未定义的行为

for循环不会取消引用
.end()
,因为当迭代器等于.end()时,它会停止,所以在您发布的代码中这应该不是问题。您可能在前面的其他代码中有不同的错误。

所有STL容器返回的
.end()
迭代器指向超过容器末尾的一个,取消引用它(
*iterator
)会导致未定义的行为


for循环不会取消引用
.end()
,因为当迭代器等于.end()时,它会停止,所以在您发布的代码中这应该不是问题。您之前的其他代码可能有不同的错误。

问题在于您没有向我们展示的代码。我关心的是end()函数是否会出错。。。我从来没有见过它第二件事是为什么它给出的大小为8,我有一个for循环,就在我打印大小的语句下面。它怎么会出错呢?请发布一个完整的、最少的示例程序来演示您的错误。一个完整的程序是我们可以复制、粘贴和编译的程序。最小程序不包含与您的问题无关的行。我知道生产一个似乎很困难,但它很有价值。我们将能够更好地解决您的问题。此外,您可以在生成最小样本的同时自行解决此问题。请参阅。@Rob:您可以引用a的联机定义。问题在于您没有向我们展示的代码。我关心的是,can end()函数是否会失控。。。我从来没有见过它第二件事是为什么它给出的大小为8,我有一个for循环,就在我打印大小的语句下面。它怎么会出错呢?请发布一个完整的、最少的示例程序来演示您的错误。一个完整的程序是我们可以复制、粘贴和编译的程序。最小程序不包含与您的问题无关的行。我知道生产一个似乎很困难,但它很有价值。我们将能够更好地解决您的问题。此外,您可以在生成最小样本的同时自行解决此问题。请参阅。@Rob:您可以引用a的联机定义。是的,推迟它会导致分段错误。但我的情况不同。我没有收到任何错误,除了它无限地进入循环,大小显示为8:(你发布的循环不会显示大小,你的大小线在循环上方。发布你的真实代码,以便我们可以找到真实的错误:)是的,循环只会将集合中的元素打印给我。因为它进入了infite循环,所以我打印了大小,以检查为set显示的大小。实际的代码很长,而且是保密的,我想我很难在这里复制,我不知道该告诉你什么。你在真实代码中的错误,我们无法调试它,除非至少看到一个重现问题的示例。您发布的片段根本不会重现问题。制作一小段代码,再现您的问题并发布,我们可以告诉您任何让您困惑的语言特性/语法。好的。。明天我会把它贴在真实的片段上,轨迹显示大小为8,并以无限循环的方式进行。。。。延迟会导致分段错误。但我的情况不同。我没有收到任何错误,除了它无限地进入循环,大小显示为8:(你发布的循环不会显示大小,你的大小线在循环上方。发布你的真实代码,以便我们可以找到真实的错误:)是的,循环只会将集合中的元素打印给我。因为它进入了infite循环,所以我打印了大小,以检查为set显示的大小。实际的代码很长,而且是保密的,我想我很难在这里复制,我不知道该告诉你什么。你在真实代码中的错误,我们无法调试它,除非至少看到一个重现问题的示例。您发布的片段根本不会重现问题。制作一小段代码,再现您的问题并发布,我们可以告诉您任何让您困惑的语言特性/语法。好的。。明天我会把它贴在真实的片段上,轨迹显示大小为8,并以无限循环的方式进行。。。。当做