C++ 基于第一个向量';s元素

C++ 基于第一个向量';s元素,c++,vector,erase,C++,Vector,Erase,我必须使用相同数量的元素。我想根据一个条件删除第一个向量的元素,但我也想从第二个向量删除位于相同位置的元素 例如,这里有两个向量: std::vector<std::string> first = {"one", "two", "one", "three"} std::vector<double> second = {15.18, 14.2, 2.3, 153.3} 但是我也不知道从第二个向量中删除元素的方法。我建议您更改数据结构。 使用结构固定两个元素: struct

我必须使用相同数量的元素。我想根据一个条件删除第一个向量的元素,但我也想从第二个向量删除位于相同位置的元素

例如,这里有两个向量:

std::vector<std::string> first = {"one", "two", "one", "three"}
std::vector<double> second = {15.18, 14.2, 2.3, 153.3}

但是我也不知道从第二个向量中删除元素的方法。

我建议您更改数据结构。 使用结构固定两个元素:

struct Entry
{
  std::string text;
  double      value;
};
现在这变成了两个元素的一个向量:
std::向量第一和第二


在向量中搜索给定文本时,可以删除一个同时包含文本和值的元素

您可以使用带有索引的
for
循环,其中两个向量都需要使用一个索引。你可以用同样的索引从两个向量中删除,一种方法是使用Boost中的zip迭代器,或者只使用
std::multimap
@archbishopfanterbury:是的,你的建议是另一种选择。
for(int i = first.size() - 1; i >= 0; i--){
   if(first[i] == "one"){
       first.erase(first.begin() + i);
       second.erase(second.begin() + i);
   }
}
struct Entry
{
  std::string text;
  double      value;
};
for(int i = first.size() - 1; i >= 0; i--){
   if(first[i] == "one"){
       first.erase(first.begin() + i);
       second.erase(second.begin() + i);
   }
}