【发布时间】:2013-12-08 15:51:49
【问题描述】:
感谢您对之前代码的帮助,伙计们!我现在正在扩展之前的查询以包含以下代码:我遇到了 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;
}
【问题讨论】:
-
在
vector<int>中,它不应该让你写*ilist2 = "gone";。 -
"gone" 实际上是 0。谢谢你的捕捉,Ben!不过,程序仍然没有显示 for 循环后的值。
-
顺便说一句,preincrement
++ilist1可以比 postincrementilist1++快(充其量是相等的,取决于优化器的好坏) -
是我一个人,还是标题好像和问题没什么关系?
-
@user3079139 这是您的第一个问题,我应该指出,一旦发布了答案,过度更改您的代码是不明智的。下面的 2 个答案现在与您最初问题的原始源代码没有远程关联。此外,您的新向量是空的