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

vector::erase()? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Остаток от деления знакового на знаковое через беззнаковые http://www.cyberforum.ru/cpp-beginners/thread750000.html
Каким текстом можно получить гарантированно правильный результат, если нельзя использовать готовую операцию остатка сразу для знаковых?
C++ Программное создание каталога Как это делается? Достаточно ли просто открыть в поток файлового вывода файл в несуществующем каталоге? Или как? http://www.cyberforum.ru/cpp-beginners/thread749977.html
C++ Взаимодействие между процессами двух приложений
В задании к лабораторной сказано, что нужно открыть файл в одном приложении, а считывать данные с помощью другого приложения. Не могу представить, как это вообще должно происходить, можете объяснить на пальцах? Текст задания: Исследовать возможность создания двух приложений. Процессы, образованые после активации приложений, взаимодействуют между собой. Первое приложение содержит открытый файл...
Известна информация о группе студентов - Фамилия, имя, год рождения, пол, рост. объявить и инициализировать структуру , позволяющую отобразить информа C++
Вот с прошлого семестра валялась на компе задачка, приложил максимум усилий чтобы её написать. Сколько нервов, а преподша так и не проверила. Но задача работает. Это был мой первый и единственный успех в программировании на С++ю Встречается такая задача в контрольных. Буду рад, что хоть какому нибудь лаботрясу помогу. Вот собственно задача /*Известна информация о группе студентов - Фамилия,...
C++ нету входа в цикл http://www.cyberforum.ru/cpp-beginners/thread749933.html
Есть прога. Не важно что она делает, суть в том что она не входит в цикл(ниже), не могу понять почему. Помогите пжл. #include <iostream> using namespace std; struct Table { char name; int num; };
C++ Обычная функция которая формирует список Описать функцию, которая формирует список L3, включая в него элементы, которые входят в один из списков (L1 или L2), но при этом не входят в другой. Список L3 формируется из копий звеньев списков L1 и L2; списки L1 и L2 не изменяются. Прошу помочь с реализацией или хотя бы идеи, советы,ссылки... Добавлено через 9 часов 16 минут как всё это сделать функцией? подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
30.12.2012, 15:00     vector::erase()?
booker, вот так это делается
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
#include <ctime>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
 
struct person
{
    string name;
    int age;
};
 
int main()
{
    int i;
    person p1;
    person p2;
    person px;
    p1.name = "name1";p1.age = 10;
    p2.name = "name2";p2.age = 15;
    vector <person> pList;
    //Рандомное заполение
    srand(time(0));
    cout<<"Input : "<<endl;
    for(i = 0; i < 20; i++)
    {
        if(rand() % 2 == 1)
            px = p1;
        else
            px = p2;
        cout<<"struct # "<<i + 1<<" :\t"<<px.age<<"\t"<<px.name<<endl;
        pList.push_back(px);
    }
    for(i = 1; i < pList.size(); i++)
    {
        if(pList[i].name == pList[i - 1].name)
            pList.erase(pList.begin() + i--);
    }
    cout<<"Output : "<<endl;
    for(i = 0; i < pList.size(); i++)
        cout<<"struct # "<<i + 1<<" :\t"<<pList[i].age<<"\t"<<pList[i].name<<endl;
    return 0;
}
PS:Основной твой недочёт что при erase позиция i соответсвует следующему после удаляемого элемента и ты её на итерации проскакиваешь полагая что на i-м месте всё также будет удалённый элемент. Обрати внимание на i-- в моём коде...
От себя - итераторы, тяжеловесные констукции - зачем это всё? std::vector допускает простую адресацию по индексу, как к элементу массива
Миниатюры
vector::erase()?  
 
Текущее время: 20:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru