Возврат строковой функции - PullRequest
0 голосов
/ 14 марта 2012

я не могу return, если некоторые из strings появляются более одного раза.

т.е. у меня есть два vectors, и я ищу 1st vector с помощью 2nd vector и если некоторые из elements из 2nd vector появляются более чем один раз в 1st vector, я хочу return ошибку, но по какой-то причине я могу return только, если элементы в 1st vector делаютне появляется более одного раза

мой код ниже

Я хочу return s1, когда элементы появляются более одного раза, как я могу это сделать, я попытался сделать это перед 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;

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Измените цикл на:

    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 голосов
/ 14 марта 2012

Я думаю, что код правильный. Он отлично работает на моем компьютере. Может быть, вы можете вывести что-то внутри if, чтобы увидеть, что на самом деле происходит.

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