我有两个由蛋白质pdb id组成的载体,如1A3BA,3B5RE,1WYX5。我想比较一下这两个向量中的蛋白质列表是否相同。有什么不同呢?我试着在C++中使用stl算法,但是总是有段错误!有没有人能告诉我出什么事了?我也不太确定排序算法,但是anyway..No不管我放不放排序,代码都有问题……
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;
}发布于 2012-12-11 01:07:51
看看如何对第二个向量进行排序:
sort(pdb_b_list.begin(),pdb_a_list.end()); 您插入了错误的结束索引,它应该是pdb_**b**_list.end(),因此是段错误。
https://stackoverflow.com/questions/13805625
复制相似问题