【发布时间】:2014-04-21 09:32:25
【问题描述】:
我目前正在用 c 编程,我想知道是否有一种聪明的方法可以过滤数组以使另一个数组满足某些条件。
一个示例问题是: 给定一个大小为 10 的随机整数数组,生成一个仅包含数组中偶数的数组。
由于很难知道有多少元素满足条件,所以我通过数组检查了两次,一次计算满足条件的元素个数,然后将相应的元素实际放入数组中。
我尝试的另一件事是创建一个大小为 10 的整数数组,在第一次运行时存储所有满足条件的索引,然后在将所需元素复制到数组时读取所需索引数组中的元素。
一般来说,数组可能很大,检查条件可能很昂贵,所以我认为这种方法不会很好。
我觉得应该有更聪明、更有效的方法来做到这一点。你能帮帮我吗?
【问题讨论】:
-
假设最坏情况并分配足够的内存来复制整个数组?或者这不是一个合适的方法?您对原始数组的大小有一个很好的近似值吗?
-
可以使用动态内存分配。
-
制作类似 c++ 向量的东西。 How to replicate vector in c?
-
顺便问一下,CUDA中可以使用动态内存分配吗?
标签: c arrays performance