Форум программистов, компьютерный форум 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 минут как всё это сделать функцией? подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
30.12.2012, 14:53     vector::erase()?
Как по мне, unique самое то. Вот как бы я решил:
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
struct person{
    std::string name;
    int age;
 
    person(const std::string& s, const int val): name(s), age(val) {}
};
 
int main()
{
    auto print = [](const std::vector<person>& per)
    {
        for (auto& val : per) std::cout<<val.name<<"\n";
    };
 
    std::vector<person> repw;
    repw.push_back(person("Igor", 25));
    repw.push_back(person("Slava", 25));
    repw.push_back(person("Igor", 30));
    repw.push_back(person("Svetick", 25));
    repw.push_back(person("Igor", 18));
 
    print(repw);
 
    std::sort(repw.begin(), repw.end(), [](const person& per1, const person& per2){return per1.name<per2.name;});
    repw.erase(std::unique(repw.begin(), repw.end(), [](const person& per1, const person& per2){return per1.name==per2.name;}), repw.end());
 
    std::cout<<"\n********************************\n";
    print(repw);
 
    std::cout<<"\n";
    system("pause");
    return 0;
}
 
Текущее время: 17:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru