如何使 for 循环不迭代整个数组,而只迭代指定的索引 [closed]

How to make for loop not iterate entire array but only specified index [closed]

提问人:FrodobabboDev 提问时间:11/15/2023 更新时间:11/15/2023 访问量:84

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

7天前关闭。

我是编程新手,目前正在学习 C++,这是我的代码

           switch (userEditChoice)
            {
            case 1:
                std::cout << "Item to remove (1-5): ";
                std::cin >> removedItem;
                std::cout << " Item to add: ";
                std::cin >> itemAdded;

                for (int i = removedItem; i < amazonSize; i++)
                {
                    amazon[i] = itemAdded;
                }
                break;
            }
        }

我的程序可以工作,但不是只更改数组中的第一个值,而是更改第一个值和其余值。如何让它只更改第一个并保持其余部分不变?提前致谢!

我试着搞砸 i++,但是当我把它拿出来或搞砸它时,一旦我到达它,我的程序就结束了。

C++ 数组循环 for 循环

评论

1赞 tkausl 11/15/2023
循环是干什么用的?
1赞 EeEmDee 11/15/2023
是的,只需摆脱循环并使用 您可能需要检查用户输入是否在允许值范围内访问数组。amazon[removedItem] = itemAdd;
0赞 PaulMcKenzie 11/15/2023
我的程序有效,但是......-- 所以你的程序不工作。
0赞 Aconcagua 11/15/2023
你应该提供一个最小的可重现示例,例如,在给定的代码中,我们看不到实际是什么(大概是一个经典/原始数组 - 你可能希望更喜欢一个或更多;前者用于可变,后者用于固定大小;两者都提供它们的当前大小,所以你不需要单独存储)。amazonstd::vectorstd::array
0赞 Yunnosch 11/15/2023
你确定“只更改数组中的第一个值”真的是你要做的吗?你的大多数代码似乎暗示你应该做的是从数组中删除一个项目,这确实需要一个循环。请编辑以澄清这一点,并在必要时更改您的 MRE(最小可重现示例)以不提及删除。

答:

0赞 Kevin Yang 11/15/2023 #1

假设您的数组是一个 STL 容器,例如 /。 如果要将 item removedItem(index) 更改为 itemAdded,可以使用vectorlist

amazon[i] = itemAdded;

而不是

for (int i = removedItem; i < amazonSize; i++)
{
  amazon[i] = itemAdded;
}

对于循环的含义,它正在检查 removedItem(index) 中的所有项目,但您只想修改一个。for

评论

1赞 Yunnosch 11/15/2023
这缺少 的定义。此外,您可能还想改写“removedItem(index)”,至少我不明白您的意思,可能是“索引处的项目存储在”中。然而,我怀疑标识符“removedItem”表明该代码被不恰当地改编为删除项目的函数,这在数组中比覆盖现有项目要困难得多。在回答之前,这需要 OP 的澄清,因为代码的其余部分暗示这实际上是他们的目标——这就是问题关闭的原因。iremovedItem