2012-03-14 230 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; 
    }