gpt4 book ai didi

c++ - 移动数组 C++ 中的元素

转载 作者:行者123 更新时间:2023-11-27 23:34:40 28 4
gpt4 key购买 nike

我想知道为什么我在“intFront”中的数据不保持不变。我将数组中的元素左移:

void stack::rotate(int nRotations)
{
for (; nRotations > 0 ;) // Number of Rotations to the left
{
intFront = &items[top+1].n;
for ( int shiftL = 0; shiftL < count-1; shiftL++ )
{
items[shiftL] = items[shiftL+1]; // shift left from the front
}
items[count-1].n = *intFront;
nRotations--; // decrement=0 will indicate no more rotations left
}
}

发生的事情是数组的第一个值或“head”或“front”被放入变量“intFront”中。我将剩下的所有东西旋转给定的旋转次数,希望最后能做一个简单的转移。猜不着..

最佳答案

  1. 您超出了数组范围:items[shiftL+1] 的读取在最后一次迭代中超出了数组边界,
  2. 您将指向结构成员的指针保存到 intFront 中,然后在内部循环中按值覆盖这些结构 - 这肯定会更改 intFront 指向的值,
  3. 不需要进行多次复制,即不需要两个嵌入式循环,因为您知道需要移动多少 (nRotations)。

关于c++ - 移动数组 C++ 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1655501/

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