gpt4 book ai didi

c++ - 从数组中删除零并将数组的大小调整为新的元素数量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:52 27 4
gpt4 key购买 nike

我在处理 C++ 数组中的数据时遇到了另一个问题。我现在想通过删除数组中的所有零来抽取数组。

例如,在我有 array[4] = {1,2,0,0,4} 之前,它会变成 array[3] = {1,2,4 }

我知道我需要使用 for 循环来遍历存储主要数据的数组,而且我很可能需要初始化一个新数组来存储抽取的数据,但我不太确定如何进行

最佳答案

您不能调整普通数组的大小,因为它是静态分配的。因此,最好使用 vector。来自标准库(STL)。这样您就不需要创建新数组。实际上,除非有充分的理由,否则通常使用 std::vectorstd::array (在 C++11 中)比使用普通的类 C 更好数组。

通过使用 vector,您可以执行以下操作:

std::vector<int> v{1,2,0,0,4};
v.erase(
std::remove(v.begin(), v.end(), 0),
v.end());

在删除零元素后, vector 的容量仍然为 5(当然 v.size() 会像预期的那样返回 3)。如果您可以使用 C++11,那么您可以更进一步:

v.shrink_to_fit();

shr​​ink_to_fit 的调用减少了 vector 的容量以适应其中的实际元素数量(示例中为 3)。这可能会节省内存(尤其是当 vector 中有很多元素时)。

关于c++ - 从数组中删除零并将数组的大小调整为新的元素数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581940/

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