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));