Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Переделать код для unordered_set

02.03.2018, 22:34. Показов 815. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня просьба к более опытным программистам данного форума. Можно ли как-то переделать код ниже для unordered_set? Подойдет ли этот контейнер для решения данной задачи? Если нет, то какой еще можно использовать? Данный код удаляет все повторы из строки сохраняя порядок символов. На входе строка, элементы которой переносятся в unordered_set<char>. Вот мое решение:

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
#include <iostream>
 
using namespace std;
 
int main()
{
    string a;
    getline(cin, a);
    for (int j = 0; j < a.length(); j++)
    {
        for (int i = j + 1; i < a.length(); i++)
        {
            if (a[j] == a[i])
            {
                while (a[j] == a[i])
                {
                    a.erase(i, 1);
                }
            }
        }
    }
    cout << a << endl;
    system("pause"); 
    return 0;   
}
P.S. Сам алгоритм должен повторять исходный.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2018, 22:34
Ответы с готовыми решениями:

Переделать код программы для Borland++?
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; using namespace std; void main() { int kol={0,0}, pozit=-1; string...

Как переделать код для р8я частиц
Надо чтобы они имели скоростя одинаковы но соответсвенно их цвету--то есть как их поделить хотя бы на трир цвета с разными скоростями ...

Переделать код для Visual Studio 2008 c++
Нам задали лаб раб, я делал как консольное приложение, все сделал, а оказалось что надо делать под windows, хотел спросить сложно ли...

6
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
02.03.2018, 22:54
Множества не хранят порядок элементов. С другой стороны множества и используют как раз для того, чтобы отказаться от этого алгоритма. Достаточно положить элемент в множество, -- и будет обеспечена уникальность. Поэтому непонятно требование сохранить алгоритм.
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
02.03.2018, 23:18  [ТС]
Цитата Сообщение от palva Посмотреть сообщение
Множества не хранят порядок элементов.
Здравствуйте! Спасибо за ваш ответ. Мне необходимо сохранить порядок остающихся элементов. Вот пример входных данных:

abc13a1b2z3c

Выходные данные:

abc132z

Данная задача решена (см. код выше), но в последнем тесте по времени не проходит. Есть алгоритм, который работает быстрее, но мне хотелось бы сохранить этот, чтобы посмотреть на скорость выполнения.

P.S. Можно ли как-то ускорить мой алгоритм?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
02.03.2018, 23:36
Месье знает толк в извращениях.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main()
{
    bool table[256]={false};
    while(std::cin.peek()!='\n' && std::cin.peek()!=EOF)
    {
        int value=std::cin.get();
        if(!table[value])
        {
            table[value]=true;
            std::cout.put(value);
        }
    }
    std::cout<<std::endl;
    return 0;
}
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
03.03.2018, 02:23
Fixer_84, заводим unordered_set, идем по строке, если символа в множестве добавляем и добавляем в строку-результат(которая изначально пустая). Добавление в unordered_set работает за О(1), потому получаем алгоритм за линейное время.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.03.2018, 02:34
Цитата Сообщение от Новичок Посмотреть сообщение
Добавление в unordered_set работает за О(1), потому получаем алгоритм за линейное время.
А в худшем случае - добавление работает за линейное время. Плюс дергает аллокатор, для которого гарантий времени работы вообще никто, никому не давал.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
03.03.2018, 02:53
Renji, выходит unordered_set вообще нельзя использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2018, 02:53
Помогаю со студенческими работами здесь

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

Переделать код для 400-ичной системы счисления
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; using namespace std; class chisla ...

Переделать код поиска седловой точки в квадратной матрице для прямоугольных матриц
Нужно переделать код поиска Седловой точки, с квадратной матрицы в динамическую(размер nxm) Вот код: #include &lt;stdio.h&gt; ...

Unordered_set и unordered_map
Добрый день. Объясните простыми словами отличия этих контейнеров от set и map. Не нашел простого объяснения на русском языке)

Переделать код для работы с файловым вводом/выводом (работа с массивом объектов пользовательского типа)
Доброго времени суток! Можно ли переделать эту прогу на работу с файлом при помощи потоковых функций ввода вывода, подключаемых библиотекой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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