std :: set中的键在插入时更改

时间:2017-09-19 07:45:31

标签: c++ linux stl

我目前有一个非常奇怪的问题,其中以下代码行为不端:

std::set<int> simpleSet;
for( int i=0; i<10; ++i )
    simpleSet.insert( i );

是的,它实际上只是插入(或放置相同的结果)某些东西。无论如何,直到i = 6一切都很好,但在插入7时,该套装从

开始
Locals
    i   7   int
    simpleSet   <7 items>   std::set<int, std::less<int>, std::allocator<int> >
        [0] 0   int
        [1] 1   int
        [2] 2   int
        [3] 3   int
        [4] 4   int
        [5] 5   int
        [6] 6   int

Locals
    i   8   int
    simpleSet   <8 items>   std::set<int, std::less<int>, std::allocator<int> >
        [0] 0   int
        [1] 1   int
        [2] 2   int
        [3] 1   int
        [4] 2   int
        [5] 1   int
        [6] 2   int
        [7] 1   int
调试器中的

。这可以与其他数据类型和随机值一起重现。始终在插入第8个元素时,所有先前的元素都会更改。由于某种原因,插入更多只会在集合中添加更多的1和2。并且在新的存储桶中。

我使用glibc 2.26版和gcc 7.2.0或clang 4.0.1在Linux上工作(两者都产生同样的问题)。

编辑:这是QtCreator(可能还有其他IDE)中调试数据可视化工具的问题。将set的内容写入stdout时,会打印正确的值。

0 个答案:

没有答案