2017-02-23 28 views
0

Это мой кусок кода. Я пытаюсь пропустить вектор, и если есть дубликат, я хочу вывести «Каждый номер должен быть другим». Проблема заключается в том, что векторные элементы не совпадают, и он все равно выводит «Каждый номер должен быть другим». Что я делаю не так?Ошибка проверки дубликатов в векторе

bool endLoop = false; 
     for(int g = 0; g < guessVec.size(); ++g){ 
      for(int j = 1; j < guessVec.size(); ++j){ 
       if(guessVec.at(g) == guessVec.at(j)){ 
        endLoop = true; 
       } 
       else if(guessVec.at(g) != guessVec.at(j)){ 
        endLoop = false; 
       } 
      } 
      if(endLoop){ 
       cout << "Each number must be different."; 
       break; 
     } 
+1

По _sorting_ до ищем дубликаты вы бы сэкономить много усилий. Для некоторых идей см. Http://stackoverflow.com/questions/17892896/how-to-find-duplicates-in-stdvectorstring-and-return-a-list-of-them. – RuDevel

ответ

0
bool endLoop = false; 
    for(int g = 0; g < guessVec.size(); ++g) 
    { 
     for(int j = g + 1; j < guessVec.size(); ++j) //<-- j can start from 'g + 1' 
     { 
      if(guessVec.at(g) == guessVec.at(j)) 
      { 
       endLoop = true; 
       break; //<-- you can break the loop once you discovered a duplicate 
      } 

      //else if(guessVec.at(g) != guessVec.at(j)) 
      //{    
      // endLoop = false; 
      //} 

     } 

     if(endLoop == true) 
     { 
      cout << "Each number must be different."; 
      break; 
     } 
    } 
Смежные вопросы