gpt4 book ai didi

c++ - c++ 中的 deque::push_back()

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

我的代码中有两个结构

struct Node
{
int no;
Node* next1;
Node* next2;
char path1;
char path2;
};

struct NodeSet
{
Node* entry;
Node* exit;
};

和像双端队列

deque<NodeSet> nsQueue[100]

问题是当运行到:nsQueue[level+1].push_back(ns)执行前:+

ns  {entry=0x0026f5a0 {no=2 next1=0x0026f350 {no=3 next1=0x002999e8 {no=4 next1=0x00299a38 {...} next2=0xcdcdcdcd {...} ...} ...} ...} ...} NodeSet

执行后:+

ns  {entry=0x0026f5a0 {no=2 next1=0x0026f350 {no=-858993460 next1=0x00000000 {no=??? next1=??? next2=??? ...} ...} ...} ...}    NodeSet

为什么值会改变?感谢您的帮助。

最佳答案

因为我敢打赌你在调用 push_back() 之后没有再次调用 begin()end()

deque 在调用 push_back() 后使其迭代器失效

Why does push_back or push_front invalidate a deque's iterators?

但如果没有看到您的代码,我也无法证明这一点。

编辑:或者您正在做一些奇怪的事情,因为您有 100 个队列,它们并没有按照您认为的那样进行。

关于c++ - c++ 中的 deque::push_back(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16476355/

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