Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
1

Удалить дубликаты без изменения порядка следования элементов

07.06.2016, 05:21. Показов 1581. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
можно ли это сделать средствами stl эффективней?
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::vector<int> vec = { 31,2, 4,4421,52,425,2,4,4,31,34,32,3,4,2,31,4421};
for(const auto& el : vec)
            std::cout<<el<<" ";
std::unordered_set<int> st(vec.begin(), vec.end());
std::vector<int> temp(st.begin(), st.end());
vec.swap(temp);
std::reverse(std::begin(vec), std::end(vec));
for(const auto& el : vec)
            std::cout<<el<<" ";
//вывод:
 31 2 4 4421 52 425 2 4 4 31 34 32 3 4 2 31 4421
31 2 4 4421 52 425 34 3
или только самому ручками писать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2016, 05:21
Ответы с готовыми решениями:

Написать программу изменения порядка следования элементов динамического массива в обратном порядке
Написать программу изменения порядка следования элементов динамического массива в обратном порядке

Преобразовать строку таким образом, чтобы цифры каждого слова были перенесены в начало слова без изменения порядка следования их в слове
подскажите в чем ошибка задание:Преобразовать строку таким образом, чтобы цифры каждого слова...

Изменения порядка следования элементов в массиве на противоположный
Дан одномерный массив, состоящий из n вещественных элементов. Составить программу для изменения...

Составить программу для изменения порядка следования элементов в массиве на противоположный
Помогите, пожалуйста, дорогие форумчане. Дан одномерный массив, состоящий из n вещественных...

4
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.06.2016, 08:34 2
Цитата Сообщение от tapochka Посмотреть сообщение
можно ли это сделать средствами stl эффективней?
Вообще-то порядок элементов в std::unordered_set стандартом не определен, так что нет гарантии, что это ваше решение будет правильно работать во всех реализациях.
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
07.06.2016, 09:30 3
C++
1
2
3
4
5
6
#include <algorithm>
 
std::vector<int>::iterator pend = vec.end(); 
for (auto it = vec.begin(); it != pend; ++it)
   pend = std::remove(vec.begin(), vec.end(), *it);
vec.erase(pend, vec.end());
вроде должно работать

Добавлено через 5 минут
C++
1
pend = std::remove(it+1, pend, *it);
так правильнее
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.06.2016, 13:04 4
Лучший ответ Сообщение было отмечено tapochka как решение

Решение

Цитата Сообщение от mat_for_c Посмотреть сообщение
вроде должно работать
Не, так у вас квадратичная сложность получается. Вот так лучше:
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
53
54
#include<algorithm>
#include<iostream>
#include<iterator>
#include<vector>
#include<unordered_set>
///////////////////////////////////////////////////////////////////////////////
typedef std::vector     < int   >   T_int_vect;
///////////////////////////////////////////////////////////////////////////////
template< typename  TT_cont >
void    print_elements( TT_cont   const   &   cont )
{
    for( auto   elem    :   cont )
    {
        std::cout   <<  elem
                    <<  " ";
    }
 
    std::cout   <<  std::endl;
}
///////////////////////////////////////////////////////////////////////////////
template< typename  TT_cont >
void    cont_stable_unique( TT_cont     &   cont )
{
    using   TT_unord_set    =   std::unordered_set< typename TT_cont::value_type >;
 
    TT_unord_set    unord_set;
    TT_cont         res_cont;
 
    for( auto   elem    :   cont )
    {
        if  (
                !unord_set.count( elem )
            )
        {
            res_cont    .push_back  ( elem );
            unord_set   .insert     ( elem );
        }
    }//for
 
    std::swap   (
                    cont,
                    res_cont
                );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::ios::sync_with_stdio(false);
    T_int_vect          int_vect    { 31,2, 4,4421,52,425,2,4,4,31,34,32,3,4,2,31,4421 };
 
    print_elements      ( int_vect );
    cont_stable_unique  ( int_vect );
    print_elements      ( int_vect );
}
1
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
07.06.2016, 21:52  [ТС] 5
Цитата Сообщение от Mr.X Посмотреть сообщение
Вообще-то порядок элементов в std::unordered_set стандартом не определен
спасибо, не знал...
0
07.06.2016, 21:52
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2016, 21:52
Помогаю со студенческими работами здесь

Сформировать новый список путем изменения порядка следования элементов на противоположный относительно исходного списка
Написать программу которая формирует новый список путем изменения порядка следования элементов на...

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

Удалить из одномерного массива все четные элементы без изменения порядка
Написать программу используя функции, но не использовать указатели 2. Удалить из одномерного...

Удалить из массива нулевые элементы, передвинув на их место следующие элементы без нарушения порядка их следования
Удалить из массива A(n) нулевые элементы, передвинув на их место следующие элементы без нарушения...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru