2009-11-07 34 views
2

IVE擦除向量元素定义如下并用元素填充它:通过键

vector <vector<double> > my_vector; 

但我希望与特定键一个删除元素...

my_vector.erase(int(specific_key)); 

但它不允许我。我将如何恰当地处理分配给该键的元素?

+1

向量中没有键,只有索引... – 2009-11-07 06:07:46

回答

5

你假设由specific_key意味着该位置的元素在vector

my_vector.erase(my_vector.begin() + specific_key); 

将是 “最正确” 的答案。

如果您打算删除匹配的元素specific_key(这将在给定的例子是vector<double>类型:

my_vector.erase(find(my_vector.begin(), my_vector.end(), specific_key)); 
+0

是的,我想删除向量中该位置的元素当我将代码应用于gabe (第一个),我的应用程序冻结。 – Prodigga 2009-11-07 06:25:51

+0

没关系冻结是由别的东西引起的。将一次我测试这个冻结固定。 – Prodigga 2009-11-07 06:30:11

+0

+1,这两个选项。确保在擦除之前检查end()。 – 2009-11-07 07:16:18

1

擦除需要一个迭代器作为参数。

你可以做

my_vector.erase (my_vector.begin() + specific_key); 

您也可以在一个范围内通过

my_vector.erase (my_vector.begin(), my_vector.begin() + 2); 

一件事,你应该注意的是,矢量的尺寸也得到降低。

0

如果特定的键没有位置,说其在矢量一些数据,然后一个必须迭代该数据的向量,并删除特定的迭代器。