2012-03-14 185 views
0

如果某些strings出现多次,我不能return返回字符串函数

即我有两个vectors和我搜索了1stvector2ndvector,如果一些elements2nd vector1st vector出现不止一次,我想return一个错误,但由于某种原因,我只能return如果在1st vector的元素不会出现不止一次

我的代码如下

我想return s1当元素已经出现不止一次我该怎么办,我试图让它盈Ø F中的break,但没有奏效

std::vector<std::string> test; //vector that comes in 
test.push_back("YES"); 
test.push_back("YES"); 
//test.push_back("NO"); 
test.push_back("NO"); 

std::vector<std::string> test1; // vector from DB.. 
test1.push_back("YES"); 
test1.push_back("NO"); 

std::string s ("Element count is fine"); 
std::string s1 ("Element count is incorrect"); 
for(int i = 0; i < test1.size(); i++) 
{ 
    if(count(test.begin(), test.end(),test1[i]) > 1) 
    { 
     return s1; 
    } 
} 

return s; 
+4

请在某处添加一些fullstops。 – PermanentGuest 2012-03-14 12:25:25

+0

看看你的休息时间。它存在forloop,而不是if语句。 – RvdK 2012-03-14 12:27:26

+0

“我试着让它在盈亏的前面,但是没有奏效”=>究竟发生了什么? – PermanentGuest 2012-03-14 12:32:24

回答

2

更改环路:

for(int i = 0; i < test1.size(); i++) 
    { 
     if(count(test.begin(), test.end(),test1[i]) > 1) 
     { 
     // DCS_LOG_DEBUG("Some elements have appeared more than once..."); 
      return s1; 
     } 
    } 

return,跳出所有的控制结构和树叶的当前功能。您的旧代码几乎每次都会返回s1,因为return s1未被if保护。

+0

哦好吧,所以现在如果我改变它将返回s1当它进入if块嗯是的,我认为它会工作,因为它不是'返回's1'的文本之前 – CodersSC 2012-03-14 12:28:38

+0

嗯它仍然不会返回s1当我有我的代码,如@Mankarse – CodersSC 2012-03-14 13:15:28

+0

嗨@Mankarse这仍然无法正常返回s1:/ – CodersSC 2012-03-16 13:23:08

0

我认为代码是正确的。它可以在我的电脑上正常工作。也许你可以在内部输出一些东西,看看究竟发生了什么。

if(count(test.begin(), test.end(),test1[i]) > 1) 
    { 
     cout<<"The count is "<<count(test.begin(), test.end(),test1[i])<<endl; 
     return s1; 
    }