C++ 如何比较两个向量中的两个值,然后更新C++;?

C++ 如何比较两个向量中的两个值,然后更新C++;?,c++,vector,C++,Vector,谢谢大家对前面代码的帮助!我现在扩展前面的查询以包含以下代码:我遇到了for循环和if语句没有输出的问题。我必须比较两个向量中的字符串,找出其中一个是否是另一个的子集;如果有子集,我必须删除它。(这两个向量实际上是相同的……这本质上是将向量中的所有元素相互比较)。任何指导都将不胜感激 //headers: iostream, vector //namespace std //main function //each vector already has content (read fr

谢谢大家对前面代码的帮助!我现在扩展前面的查询以包含以下代码:我遇到了for循环和if语句没有输出的问题。我必须比较两个向量中的字符串,找出其中一个是否是另一个的子集;如果有子集,我必须删除它。(这两个向量实际上是相同的……这本质上是将向量中的所有元素相互比较)。任何指导都将不胜感激

 //headers: iostream, vector
 //namespace std 
 //main function

//each vector already has content (read from a file) stored in them. Both vectors hold         the same elements.

int c,j; string first_sequence, second_sequence;
vector<string>::iterator ivector1; vector<string>::iterator ivector2;
vector<string> sequence_1; vector<string> sequence_2; vector<string> header;

 //comparison of sequences within each element of vectors

size_t location,x,y,k,s;

k = sequence_1.size(); 
s = sequence_2.size();
for(ivector1 = sequence_1.begin(); ivector1< sequence_1.end(); ivector1++){
 for(ivector2= sequence_2.begin();ivector2<sequence_2.end(); ivector2++){
    *ivector1 = first_sequence; *ivector2 = second_sequence;    

    if(ivect1 != ivect2){
        x = first_sequence.size();
        y = second_sequence.size();

        if(x > y){
            location = first_sequence.find(second_sequence);
                                if (location != -1){
                                    cout << "Deleting the sequence with id: <"     << *ivector2 << endl;
                    sequence_2.erase(ivector2); *ivector2 = "gone";
                                     }  


                }   else if (y > x) {
            location = second_sequence.find(first_sequence);
                                if (location != -1){                             
                    cout << "Deleting the sequence with id: <"<< *ivector1 << endl;
                    sequence_1.erase(ivector1); *ivector1 = "gone";

                                    }   

                         }
    }
 }
}

return 0;
}
//标题:iostream,vector
//名称空间标准
//主要功能
//每个向量中已经存储了内容(从文件读取)。两个向量包含相同的元素。
int c,j;字符串第一个\u序列,第二个\u序列;
向量::迭代器ivector1;向量::迭代器ivector2;
向量序列_1;向量序列_2;向量头;
//向量每个元素内序列的比较
尺寸和位置,x,y,k,s;
k=序列_1.size();
s=序列_2.size();
对于(ivector1=sequence_1.begin();ivector1因为vector1中的元素没有一个大于插入vector2中的最低值,所以不能得到任何输出。因此,这是您测试的
if
条件

  if (*ilist1 > *ilist2)
从不满足,因此不会运行
cout
语句。我敢打赌,如果您将其更改为

 if (*ilist1 < *ilist2)
if(*ilist1<*ilist2)

您将看到终端/屏幕的输出。3始终小于4。

您仅测试向量1的值是否大于向量2的值

您的代码正在测试:

1 > 4
1 > 5
1 > 6
2 > 4
2 > 5
2 > 6
3 > 4
3 > 5
3 > 6

这些都不是真的,所以没有显示任何内容。

在每个循环中,您都将迭代器的值分配给字符串first\u序列和second\u序列。您从未使用向量本身中的值。

向量中,它不应该让您编写
*ilist2=“gone”
“gone”实际上是0。感谢您的捕获,Ben!程序仍然没有显示for循环后的值。顺便说一句,preincrement
++ilist1
可以比postinrement
ilist1++
快(最多相等,取决于优化器的性能)是我,还是标题似乎与问题无关?@user3079139因为这是你的第一个问题,我应该指出,在答案发布后过度修改代码是不明智的。下面的两个答案现在与你最初问题的原始源代码没有远程关联。此外,y我们的新向量对于所有输入都是空的!我已经更新了我的查询,以解决向量的问题和它们的元素的比较(向量是相同的…因此可以将单个向量中的所有元素相互比较).IVET1和IVET2从未初始化,我猜它们也应该是IVETOR1和IVETOR2。这需要进一步编辑,使变量都有意义。我还建议增加投票答案,这很有帮助;-)@splrs它说我必须有15个声誉?不过我很想增加投票!