У меня есть два типа наборов данных.Оба в одном размере.Один содержит vector<int>
, а другой содержит vector<vector<double> >
.Когда я двигаюсь вперед один элемент за другим, я вижу некоторые дубликаты из моего vector<int>
.Итак, я хочу удалить дублирующий элемент (2-й элемент) из vector<int>
и сохранить первый элемент дальше.Если я удаляю дубликат элемента, то одновременно хочу объединить vector<double>
соответствующих двух векторов из моего набора данных vector<vector<double> >
.После объединения я хочу удалить 2-й vector<double>
, поскольку он уже добавлен к предыдущему vector<double>
.Поступая так, я хочу поддерживать наборы данных одинакового размера в дальнейшем без дублирования в первом наборе данных и без потери какого-либо элемента из моего второго набора данных.
Я реализовал простой код для этого, но я думаю,его логика неверна.Итак, не могли бы вы помочь мне исправить этот код?
vector<int>
набор данных назначен как my_list vector<vector<double> >
набор данных назначен как mydata
Например, вот мои два вектора
my_list = {222, 208, 201, 201, 201, 206, 211, 222}
mydata = {{a1,a2,a3},{b1,b2},{c1},{d1},{e1,e2},{f1,f2},{g1},{h1,h2,h3}}
after, removing duplicate from the 1st vector and by merging corresponding vectors from
2nd data, the final output would be like as
my_list = {222, 208, 201, 206, 211, 222}
mydata = {{a1,a2,a3},{b1,b2},{c1, d1, e1,e2},{f1,f2},{g1},{h1,h2,h3}}
vector<int>::iterator no, no2;
vector<vector<double> >::iterator itr1, itr2;
int i;
for (no=my_list.begin(), no2=my_list.begin()+1,
itr1=mydata.begin(), itr2=mydata.begin()+1, i=0; no != my_list.end()-1; ){
if (*no == *no2){ //current = next
no2 = my_list.erase(no2);
//add itr2 data to itr1 vector and erase itr2
mydata[i].insert(mydata[i].end(), (*itr2).begin(), (*itr2).end());
itr2 = mydata.erase(itr2);
}
else{
++no; ++no2;
++itr1; ++itr2;
++i;
}
}