Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lahden
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 52
#1

Функция Erase класса vector - C++

29.05.2014, 19:32. Просмотров 425. Ответов 4
Метки нет (Все метки)

Нужно удалить из вектора, в котором объекты авторского класса, объекты с весом более 300.
Написал цикл, но при запуске пишет Iterators Incompatible
C++
1
2
3
4
5
6
7
8
9
ps = fruits.begin();
    do
    {
        if (!count_if (fruits.begin(), fruits.end(), check300))
            break;
        ps = find_if(ps, fruits.end(), check300);
        if (ps != fruits.end())
            fruits.erase(ps);
    }while (ps != fruits.end());
Функция поиска работает корректно, выводя нужные мне записи
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (count_if (fruits.begin(), fruits.end(), check300) != 0)
    {
        cout << "Founded fruits:" << endl;
        ps = fruits.begin();
        while(ps != fruits.end())
        {
            ps = find_if(ps, fruits.end(), check300);
            if (ps != fruits.end())
            {
                cout << *ps << endl;
                ps++;
            }
        }
    }
    else
        cout << "Fruits not founded!" << endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 19:32     Функция Erase класса vector
Посмотрите здесь:

C++ vector.erase
C++ vector::erase()?
std::vector::erase C++
функция для класса Vector C++
Написание класса Vector C++
Vector и конструктор класса C++
Шаблон класса вектор с операциями индексации и функциями insert и erase C++
C++ Ошибка “vector<bool> erase iterator outside range” при работе алгоритма Хаффмана
C++ Функция erase в делении длинных чисел
Шаблон класса vector C++
String одна функция вместо erase+append C++
C++ Ошибка при использовании erase для std::vector

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
29.05.2014, 20:05     Функция Erase класса vector #2
а так?
C++
1
ps = fruits.erase(ps);
Lahden
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 52
29.05.2014, 21:57  [ТС]     Функция Erase класса vector #3
Пробовал, выкидывает _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
29.05.2014, 22:15     Функция Erase класса vector #4
std::remove_if
Lahden
1 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 52
29.05.2014, 22:18  [ТС]     Функция Erase класса vector #5
Mr.X, спасибо, c remove_if я делал, работает, но нужно именно с erase
Yandex
Объявления
29.05.2014, 22:18     Функция Erase класса vector
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru