如何从结构数组中删除元素?
How to remove element from array of structures?
我需要从结构数组中删除元素,例如值 3
。
这是我的代码:
import std.stdio;
import std.range;
import std.array;
import std.string;
import std.algorithm;
import std.conv;
void main()
{
struct Point
{
int order;
int pos;
int val;
}
Point point;
Point [] points;
point.order = 1;
point.pos = 1;
point.val = 1;
points ~= point;
point.order = 2;
point.pos = 4;
point.val = 2;
points ~= point;
point.order = 3;
point.pos = 14;
point.val = 3;
points ~= point;
point.order = 4;
point.pos = 24;
point.val = 1;
points ~= point;
writeln(points);
}
我想做这样的事情:
points.map!(a=>a.val.canFind(3).drop);
但是这是行不通的。我需要更改原始 points
数组并从中删除元素。
据我了解,您想删除值为 3 的积分。
最简单的方法是使用过滤器:
points = points.filter!(a => a.val != 3).array;
这里它创建了一个新数组,但如果您不存储结果,您可以懒惰地使用它而无需任何副本。
如果你想重用它,并且如果你做了很多这样的删除,那么我建议你看一下 std.algorithm:remove,它会删除给定索引的元素。例如,可以使用 std.algorithm:countUntil 找到所述索引。
Map 用于对集合的每个元素应用转换,例如 [1, 2, 3].map!(x => x*2+1) == [3, 5, 7]
。您定义的不是每个元素的转换,因此它无法工作。 Map 不能显着改变数组的长度,它的输出与输入的长度相同。
编辑:我忘记说了,但是这个参考可能对你有用 https://p0nce.github.io/d-idioms/#Adding-or-removing-an-element-from-arrays
我需要从结构数组中删除元素,例如值 3
。
这是我的代码:
import std.stdio;
import std.range;
import std.array;
import std.string;
import std.algorithm;
import std.conv;
void main()
{
struct Point
{
int order;
int pos;
int val;
}
Point point;
Point [] points;
point.order = 1;
point.pos = 1;
point.val = 1;
points ~= point;
point.order = 2;
point.pos = 4;
point.val = 2;
points ~= point;
point.order = 3;
point.pos = 14;
point.val = 3;
points ~= point;
point.order = 4;
point.pos = 24;
point.val = 1;
points ~= point;
writeln(points);
}
我想做这样的事情:
points.map!(a=>a.val.canFind(3).drop);
但是这是行不通的。我需要更改原始 points
数组并从中删除元素。
据我了解,您想删除值为 3 的积分。
最简单的方法是使用过滤器:
points = points.filter!(a => a.val != 3).array;
这里它创建了一个新数组,但如果您不存储结果,您可以懒惰地使用它而无需任何副本。
如果你想重用它,并且如果你做了很多这样的删除,那么我建议你看一下 std.algorithm:remove,它会删除给定索引的元素。例如,可以使用 std.algorithm:countUntil 找到所述索引。
Map 用于对集合的每个元素应用转换,例如 [1, 2, 3].map!(x => x*2+1) == [3, 5, 7]
。您定义的不是每个元素的转换,因此它无法工作。 Map 不能显着改变数组的长度,它的输出与输入的长度相同。
编辑:我忘记说了,但是这个参考可能对你有用 https://p0nce.github.io/d-idioms/#Adding-or-removing-an-element-from-arrays