Thread overview | |||||
---|---|---|---|---|---|
|
September 16, 2011 How to filter an array so the result is an array again? | ||||
---|---|---|---|---|
| ||||
The standard library std.algorithm is based on Range. So if a = [1, 2, 3, 4]; auto r = filter!("a < 2")(a); Here, r is a range. How about I want an new array? Is there any easy way to convert the result to array? If we have to do like: int[] b; for (v; r) { b ~= v; } Then maybe it is easier to not use filter at all as: int [] b; for (v; a) { if (v < 2) b ~= v; } Thanks a lot. |
September 16, 2011 Re: How to filter an array so the result is an array again? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cheng Wei | Sorry, the 'for' should be 'foreach'. |
September 16, 2011 Re: How to filter an array so the result is an array again? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Cheng Wei | On Friday, September 16, 2011 04:04:39 Cheng Wei wrote:
> The standard library std.algorithm is based on Range. So if
> a = [1, 2, 3, 4];
> auto r = filter!("a < 2")(a);
>
> Here, r is a range.
> How about I want an new array? Is there any easy way to convert the
> result to array?
>
> If we have to do like:
> int[] b;
> for (v; r) {
> b ~= v;
> }
>
> Then maybe it is easier to not use filter at all as:
> int [] b;
> for (v; a) {
> if (v < 2) b ~= v;
> }
Use std.array.array.
auto a = [1, 2, 3, 4];
auto r = array(filter!"a < 2"(a));
- Jonathan M Davis
|
Copyright © 1999-2021 by the D Language Foundation