gpt4 book ai didi

arrays - 在排除元素的同时复制数组

转载 作者:行者123 更新时间:2023-12-04 16:08:01 24 4
gpt4 key购买 nike

是否有一种标准的方法来复制不包括等于对象的元素的数组?我目前的天真解决方案:

T[] without(T)(T[] array, T what){
T[] a;
foreach(element; array)
if(element != what)
a ~= element;
return a;
}

从数组中删除元素在 D 中似乎不必要地困难,而且不可变方法似乎非常好,所以我想创建一个新数组而不是修改现有数组。std.array.replace 可以正常工作,但它不接受 [] 作为第二个参数。

最佳答案

听起来你想要std.algorithmfilter .

例如:

import std.algorithm, std.array;
void main() {
auto a = [1, 2, 3, 3, 4];
auto without3 = a.filter!(x => x != 3).array;
assert(without3 == [1, 2, 4]);
}

请注意,过滤器返回一个 FilterResult(一种范围类型),而不是一个数组。最后调用 .array(来自 std.array)将 FilterResult 转换为 array。如果您想创建和存储一个单独的“副本”,您应该调用 .array。如果您只想遍历 FilterResult,您可以像使用任何范围一样使用 foreach

关于arrays - 在排除元素的同时复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333519/

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