c++ - 新的和数组的大小

标签 c++ arrays memory dynamic

我有一个动态创建的整数数组。现在我必须删除索引为 %3 == 0 的所有元素(例如,3、6、9...)。那么,减少数组大小的最佳方法是什么?通过 malloc 我可以对内存的同一部分使用 realloc,但是 new 运算符又如何呢?这该怎么办啊。只需向左滑动所有元素,将所有其他元素归零?

最佳答案

<罢工>

<罢工>
#include <algorithm>
#include <iostream>
#include <vector>

bool IsDividedByThree (int i) { return ((i%3)==0); }

int RandomNumber () { return (rand()%100); }

int main()
{
    std::vector<int> myInts(50);

    std::generate(myInts.begin(), myInts.end(), RandomNumber);

    std::copy(myInts.begin(), myInts.end(), std::ostream_iterator<int>(std::cout, " "));

    myInts.erase(std::remove_if(myInts.begin(), myInts.end(), IsDividedByThree), myInts.end());

    std::copy(myInts.begin(), myInts.end(), std::ostream_iterator<int>(std::cout, " "));

}

STL 为您处理一切,这不是很好吗?

<罢工>

嗯,没有看到强制使用STL的评论。

C 版本:

    int *temp = new int[NEW_SIZE];
    memcpy( temp , old_array, size_of_old_array * sizeof(int) );
    delete[] old_array;
    old_array = temp;
  1. 动态创建数组
  2. 创建一个具有新大小的新数组
  3. 将元素从第一个数组复制到第二个数组
  4. 删除第一个数组
  5. 将第一个数组的指针重定向到第二个数组

所有这些答案那么,减少数组大小的最佳方法是什么? - 我假设您已经知道如何解决其余问题。

关于c++ - 新的和数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377052/

相关文章:

c++ - rand() 介于 0 和 1 之间

c++ - 在单链表的末尾移动元音

c++ - 我怎样才能从构造函数中成员的默认初始化中捕获异常?

c++ - ProjectDepthToCamera 为 pos3d 的所有 xyz 返回 0

c - 使用 strlen 查找用户输入 c 的长度

python - 如何释放 Pandas 数据框使用的内存?

arrays - 检查列表和数组是否相等 F#

javascript - 将数组元素传播到第 3 方函数 javascript 中的参数中

ios - GPU 内存因 GPUImage 而崩溃

php - 在对其执行某些操作后将变量分配给自身或分配给另一个变量有什么区别吗?