如何在 c 中比较和排序向量<string>

How to compare and sorting to vector<string> in c

本文关键字:向量 gt lt 排序 string 比较      更新时间:2023-10-16

我有两个由蛋白质pdb id制作的载体,例如1A3BA,3B5RE,1WYX5。我想比较这些拖曳载体中的蛋白质列表是否相同。有什么不同?我尝试在C++中使用 stl 算法,但一直存在段错误!有没有人可以告诉我出了什么问题..?我也不太确定排序算法,但无论如何..无论我是否进行排序,代码都有问题...

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;
                   }

看看你如何对第二个向量进行排序:

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

您插入了错误的结束索引,它应该pdb_**b**_list.end(),因此段错误。