0
我有兩個載體由蛋白質pdb id如1A3BA,3B5RE,1WYX5。我想比較這兩個載體中的蛋白質列表是否相同。有什麼不同?我試圖在C++中使用stl算法,但始終存在段錯誤!有沒有人可以告訴我什麼是錯的..? 我還不太肯定的排序算法,但anyway..No不管我把分揀或不代碼有問題的話...如何比較和排序向量<string>在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;
}
而且我認爲如果您在調試模式下編譯,Microsoft C++庫會大聲比較來自不同對象的迭代器。 –
OK .. but after fix the a/b issue ... it it like like my intersetion would be be 0/...所以我再加一個表示iaa = set_difference(pdb_a_list.begin(),pdb_a_list.end( ),pdb_b_list.begin(),pdb_b_list.end(),diffset.begin()); cout <<「差異部分有\ t」<< int(iaa - diffset.begin())<<「\ t elements」<< endl;那麼會再次出現段錯誤.. :-( – user1830108