Как сравнить и отсортировать по вектору & lt; string & gt; в с

У меня есть два вектора делают по идентификатору белка pdb, такие как 1A3BA, 3B5RE, 1WYX5. Я хочу сравнить, если список белков в этих буксирных векторах одинаков. а в чем разница? Я пытался использовать алгоритмы stl в C ++, но есть ошибки сегментов все время! Кто-нибудь может сказать мне, что не так ..?
Я также не совсем уверен насчет алгоритмов сортировки, но в любом случае .. Неважно, я поставил сортировку или нет, в коде что-то не так …

vector<string> pdb_b_list;
vector<string> pdb_a_list;
vector<string> intset;
vector<string>::iterator im;

sort(pdb_a_list.begin(),pdb_a_list.end());
sort(pdb_b_list.begin(),pdb_a_list.end());

if (includes(pdb_a_list.begin(), pdb_a_list.end(), pdb_b_list.begin(), pdb_b_list.end())){
cout << "a includes b"<<endl;
cnt_s++;
}

else if (includes(pdb_b_list.begin(), pdb_b_list.end(), pdb_a_list.begin(), pdb_a_list.end()) ){
cout <<"b includes a" <<endl;
cnt_s++;
}
else      {
cout << "different proteins  in the sets" <<endl;
cnt_d++;
//sort(pdb_a_list.begin(),pdb_a_list.end());
// sort(pdb_b_list.begin(),pdb_a_list.end());
im = set_intersection(pdb_a_list.begin(),pdb_a_list.end(),pdb_b_list.begin(),pdb_a_list.end(), intset.begin());
cout <<" the intersetion has \t" <<int(im- intset.begin())<<"elements" <<endl;

}

0

Решение

Посмотрите, как вы сортируете свой второй вектор:

sort(pdb_b_list.begin(),pdb_a_list.end());

Вы вводите неверный конечный индекс, он должен быть pdb_**b**_list.end()Таким образом, это ошибка.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]