Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 28.02.2016
Сообщений: 74
1

Удаление из вектора

12.04.2016, 21:28. Просмотров 899. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void print(vector <int> randomNumbers);
int main()
{
    vector <int> randomNumbers;
    for (int i = 0; i < 10; i++)
    {
        int random = rand()%31-15;
        randomNumbers.push_back(random);
    }
    cout << endl << "Random numbers from -15 to +15: ";
    print(randomNumbers);
    cout << endl;
 
 
    vector <int>::iterator it;
    for (it = randomNumbers.begin(); it != randomNumbers.end(); it++)
    {
        if (*it < 0)
        {
            it = randomNumbers.insert(it+1, -20);
        }
    }
    cout << endl << "Random numbers with -20: ";
    print(randomNumbers);
    cout << endl;
 
    // 5. Удалите из вектора все отрицательные числа, отличные от -20. // ПЯТЫЙ ПУНКТ-----------
    it = randomNumbers.begin();
    while (it!=randomNumbers.end())
    {
        if (*it < 0 && *it!=-20) randomNumbers.erase(it);
        else it++;
    }
    cout << endl << "Random numbers without negatives, but with -20: ";
    print(randomNumbers);
 
 
        system("PAUSE");
    return 0;
}
 
void print(vector <int> randomNumbers)
{
    for (int i = 0; i < randomNumbers.size(); i++)
    {
        cout << randomNumbers[i] << " ";
    }
}
Не работает удаление из вектора, в чём может быть причина? (5 пункт)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2016, 21:28
Ответы с готовыми решениями:

Удаление из вектора
1)В программе используется вектор которых хранит объекты некоторого класса, можно ли удалить из его...

Удаление элементов из вектора
С консоли вводится вектор значений double и точность, удалить и вектора элементы разность между...

Удаление из вектора по индексу
Добрий день, нуждаюсь в консультации. Пишу метод удаления из вектора по индексу, но наткнулся...

Удаление элемента вектора
Здравствуйте, мне нужно удалить из вектора элементы, которые делятся на 2 без остатка. Я ввожу 10...

3
6908 / 5973 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
12.04.2016, 21:33 2
Когда удалишь, итератор нарушится. Возвращаемое значение erase() используй.
0
0 / 0 / 1
Регистрация: 28.02.2016
Сообщений: 74
12.04.2016, 21:40  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Когда удалишь, итератор нарушится. Возвращаемое значение erase() используй.
return *it;
а куда именно его ставить?
0
6908 / 5973 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
12.04.2016, 21:45 4
Лучший ответ Сообщение было отмечено Ascendary как решение

Решение

Да при чём тут return?
C++
1
if (*it < 0 && *it!=-20) it = randomNumbers.erase(it);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2016, 21:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удаление элементов вектора
как вызвать деструктор? почему не удаляется объект class a { public: a() { std::cout &lt;&lt;...

Удаление элемента из вектора
Вектор состоит из объектов класса schedule, требуется удалить элементы, где base.group = gr,...

Удаление элементов вектора
Я конечно понимаю, что вектор это такая штука, которая удаляется сама при выходе из функции в...

Удаление элемента вектора
Приветствую пользователей форума. Возникает ошибка при попытке удаления элемента вектора. При...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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