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

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

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

Студворк — интернет-сервис помощи студентам
можно ли это сделать средствами 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 вещественных элементов. Составить программу для изменения порядка следования элементов в массиве на...

4
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
07.06.2016, 08:34
Цитата Сообщение от tapochka Посмотреть сообщение
можно ли это сделать средствами stl эффективней?
Вообще-то порядок элементов в std::unordered_set стандартом не определен, так что нет гарантии, что это ваше решение будет правильно работать во всех реализациях.
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
07.06.2016, 09:30
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
Лучший ответ Сообщение было отмечено 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  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Вообще-то порядок элементов в std::unordered_set стандартом не определен
спасибо, не знал...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.06.2016, 21:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru