C++ 通过键删除向量元素

C++ 通过键删除向量元素,c++,vector,encapsulation,friend,C++,Vector,Encapsulation,Friend,我定义了以下内容并用元素填充: vector <vector<double> > my_vector; 但它不允许我。如何正确地处理分配给该键的元素?erase将迭代器作为参数 你能行 my_vector.erase (my_vector.begin() + specific_key); 你也可以在一个范围内通过 my_vector.erase (my_vector.begin(), my_vector.begin() + 2); 需要注意的一点是,向量的大小也会减

我定义了以下内容并用元素填充:

vector <vector<double> > my_vector;

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

erase将迭代器作为参数

你能行

my_vector.erase (my_vector.begin() + specific_key);
你也可以在一个范围内通过

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

需要注意的一点是,向量的大小也会减小

erase方法将迭代器作为其参数


假设通过
specific\u键
表示
向量中该位置的元素

my_vector.erase(my_vector.begin() + specific_key);
这将是“最正确”的答案

如果要删除与
特定\u键
匹配的元素(在给定示例中,该元素必须为
向量

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

如果特定的键不是位置,并且说它是向量中的一些数据,那么必须为该数据迭代向量并删除特定的迭代器。

向量中没有键,只有索引…是的,我想删除向量中该位置的元素。当我应用你所说的代码时(第一个),我的应用程序冻结。别介意冻结是由其他原因引起的。我将在冻结修复后对此进行测试。+1,对于这两个选项。请确保在擦除之前检查end()。
my_vector.erase(find(my_vector.begin(), my_vector.end(), specific_key));