2016-02-29 6 views
-1

Так что я должен написать свой собственный метод.Как удалить элемент из вектора?

я сделал следующее:

vector<float> remove(vector<float>& sortedVector, float input) 
{ 

    for (vector<float>::iterator it = sortedVector.begin() ; it != sortedVector.end(); ++it) 
    { 
     if(input == *it) 
     { 
      sortedVector.erase(it); 
     } 
    } 

    return sortedVector; 
} 

Однако компилятор перерывы в течение цикла. Где я неправ? Мне нужно вернуть измененный вектор после того, как заданное значение пользователя будет удалено из вектора.

Output of the error

+0

вместо того, чтобы сделать вашу собственную функцию использовать только [стереть и удалить идиому] (https://en.wikipedia.org/wiki/Erase%E2%80%93remove_idiom) – NathanOliver

+0

@ NathanOliver Потому что он говорит «я должен написать свой собственный метод», это, вероятно, для курса или чего-то еще. –

+1

Компилятор ломается? Какой компилятор вы используете, который страдает от внутренней ошибки_ с чем-то таким простым? –

ответ

0

Зачем делать свою функцию? Вы можете просто сделать это:

vector.erase(std::remove(vector.begin(), vector.end(), item_to_delete), vector.end()); 
+0

Я должен написать свою собственную функцию. – Bayazid

+1

@Bayazid. В ваших требованиях не указано, что вам нужно было написать цикл 'for', только чтобы вам пришлось написать функцию. Эта функция может иметь внутри нее вызов «стереть/удалить». – PaulMcKenzie

+0

точно .. вы можете обернуть мой код в вашу функцию, и это все .. и если вы предпочитаете что-то более подробное - проверьте фактическую реализацию этих алгоритмов, чтобы разработать свою собственную версию. –

Смежные вопросы