如何在2D向量中删除元素?

5
我希望删除一个2d向量中的元素,例如在Field中删除[1][1],该向量是4x5向量

我尝试过:

Field.erase([1][1]);

我知道对于一个 1d向量,我只需要这样做:

Field.erase (Field.begin()+1)

但是对于2D向量呢?
1个回答

7
Field[1].erase(Field[1].begin() + 1);

这是如何删除元素的方法。但是从您的评论来看,这并不是您真正想要的。实际上,您想要的是将该元素的值清除为其默认值。为此:

Field[1][1] = Card();

感谢您的帮助。执行上述操作将从“Field”中删除一个元素,使其第二行只有4个元素而不是5个。但是,如果我只想删除该元素中的内容,从而将其恢复为空元素(以保持第二行具有5个元素),我该怎么办?(“Field”最初是一个空的4x5向量,因为它被编写为 vector< vector<Card> > Field(4, vector<Card>(5)); )我在考虑像这样做: Field[1].insert(Field[1].begin()+1); - M K
@MK:元素为空是什么意思? - Benjamin Lindley
@MK:当你写下 vector< vector<Card> > Field(4, vector<Card>(5)); 时,Field 肯定不是空的。它包含20个元素,所以我不知道你在这里如何使用“空”的词语。 - Benjamin Lindley
我的意思是我想恢复第2行中被删除的元素,使其不被初始化。我只想删除元素Field [1] [1]的值,而不是实际元素本身。 - M K
@MK:所以你只是想让它保持默认值吗?Field[1][1] = Card();(注意,这是我最初给出的答案的替代,而不是附加) - Benjamin Lindley
@MK:实际上,你并没有删除值。在C++中这是毫无意义的。每个对象都有一个值。如果元素是指针,并且您想要删除指针所指向的对象,则可能是有意义的,但元素本身(指针)仍然具有值。 - Benjamin Lindley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接