2009-11-07 33 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

如果特定的鍵沒有位置,說其在矢量一些數據,然後一個必須迭代該數據的向量,並刪除特定的迭代器。