gpt4 book ai didi

c++ - push_front C++ 用户实现

转载 作者:行者123 更新时间:2023-11-28 03:59:22 31 4
gpt4 key购买 nike

我正在尝试对 C++ 双端队列实现推送前端方法。我这样做的方式是移动数组的每个元素。它有效,但我的程序最后崩溃了!在我的推送前端方法中,我似乎“运行超过我的数组末尾”,导致堆损坏错误、调试断言,那些事情..

我无法在不移动数组的情况下开发 push_front 实现。

stack::stack(capacity) : items(new item[capacity]), front(*items), maxSize(capacity-1)
{
top = -1;
}

bool stack::pushFront(const int nPushFront)
{
if ( count == maxSize ) // indicates a full array
{
return false;
}
for ( int entry_int = 0; entry_int < count; ) // loop less than however many we count.
{
if ( entry_int == top+1 )
{
front.n = items[top+1].n;
}
items->n = items[++entry_int].n;
items[entry_int].n = front.n;
front.n = items[++entry_int].n;
items[entry_int].n = items->n;
}
++count;
items[top+1].n = nPushFront;
return true;
}

谁能帮忙?

最佳答案

通过保持前后偏移量/指针,无需移动即可轻松做到这一点。看看boost circular buffer例如。

关于c++ - push_front C++ 用户实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646506/

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