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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
#1

Удалить символ в начале очереди - C++

19.07.2009, 15:20. Просмотров 776. Ответов 4
Метки нет (Все метки)

Мне нужно удалить символ,который повторется в начале списка,причем она должен выступать параметром. То есть если у нас есть такая очередь:
"ааааапораправолпрло",тогда должна удалиться буква "а",если такая очередь:
"%%%%%%%а%%%%%ваыапываываыва",то должен удалиться символ '%' или если очередь такая
"11111;1агырваы",то соответсвенно должна удалиться цифра 1.Как это сделать за один проход?Легко сделать,если сначала сосчитаешь кол-во символов повторяющихся в начале,а потом запустишь цикл удаления,но так делаешь лишние проходы.Возможно ли сделать за 1 проход очереди?Если нет,то какой алгоритм самый быстрый?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2009, 15:20     Удалить символ в начале очереди
Посмотрите здесь:
C++ Как элемент в начале очереди поменять с минимальным элементом?
C++ В тексте удалить указанный символ везде, где он встречается. Программа не позволяет ввести символ
C++ Удалить пробелы в начале и конце строки
Ошибка при создании шаблонной очереди (LNK2019 ссылка на неразрешенный внешний символ) C++
Удалить элемент из очереди C++
C++ Удалить элемент очереди
Удалить последний элемент очереди C++
C++ Как удалить элементы из очереди
Удалить первый и последний элемент очереди C++
Удалить из очереди все отрицательные числа C++
C++ Удалить с очереди каждый второй элемент
Удалить элементы очереди с нечетными значениями C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2787 / 1373 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
19.07.2009, 15:25     Удалить символ в начале очереди #2
Ёрик, непонял...
если у нас есть очередь допустим:
"11234845"
на выходе мы должны получить:
"1234845"
или
"234845"?
Rififi
2338 / 1053 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.07.2009, 15:38     Удалить символ в начале очереди #3
std::string s = "...";
const char ch = *s.begin();
s.erase(std::remove(s.begin(), s.end(), ch), s.end());
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
19.07.2009, 22:10  [ТС]     Удалить символ в начале очереди #4
Monte-Cristo,мы должны получить "234845"
Rififi,у меня очередь,а не строка,задание неудачно объяснил,но за идею спасибо,сейчас что-н. попробую сделать.Просто тут ,оказывается, стандратный алгоритм есть,а я pop_front все пытался использовать.

Добавлено через 58 минут 33 секунды
Rififi, этот алгоритм вообще удаляет ВСЕ ЭЛЕМЕНТЫ,то есть удалятся ВСЕ элементы,находящиеся в списке:
Напр,, у меня очередь:
"444444ж4ываыа?*)№;4444_" и в результате у меня удалтся ВСЕ четверки, а мне унжно,чтобы удалились только первые.

Добавлено через 5 часов 16 минут 29 секунд
все,сам написал алгоритм,просто двойное условие поставил
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.07.2009, 03:41     Удалить символ в начале очереди #5
Цитата Сообщение от Ёрик
Как это сделать за один проход?Легко сделать,если сначала сосчитаешь кол-во символов повторяющихся в начале,а потом запустишь цикл удаления
C
1
2
3
4
5
void DeleteFirstChars(int ch)
{
    while (LookQueue(ch))
        ReadQueue();
}
то есть при просмотре она элемент не считывает, если он удался, то считывает элемент
Yandex
Объявления
20.07.2009, 03:41     Удалить символ в начале очереди
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru