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

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

Войти
Регистрация
Восстановить пароль
 
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
#1

Ошибка в роботе с контейнером: set iterator not incrementable - C++

03.12.2013, 12:54. Просмотров 551. Ответов 6
Метки нет (Все метки)

Задание:Дано предложение.Какие большие и маленькие буквы с этих 'k','p','s','t','f','h','c' не содержатся в предложении.
Обязательным условием написания программы есть использование контейнера set.
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
#include <iostream>
#include <set>
#include <conio.h>
#include <string>
using namespace std;
void main()
{
    set<char> c;
    set<char>::iterator it;
    char a[14]={'k','p','s','t','f','h','c','K','P','S','T','F','H','C'};
    string str;
    getline(cin,str);//считую предложение
    int i;
    for(i=0,it=c.begin();i<sizeof(str);i++,it++)//забиваю его в сет
        c.insert(str[i]);
    bool l[14];//каждый l отвечает своей букве в массиве символов "а"
    for(it=c.begin();it!=c.end();it++)
        for(i=0;i<14;i++)
            if(*it==a[i]) l[i]=1;//проверка наличия символа в сете
    cout<<"Nemaye takyh liter:";
    for(i=0;i<14;i++)//вывод символов,которые отсутствуют
        if(l[i]==0) cout<<a[i]<<" ";
    getch();
}
Но после ввода предложения выбивает ошибку:set iterator not incrementable.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 12:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в роботе с контейнером: set iterator not incrementable (C++):

Ошибка list iterator not incrementable - C++
код: std::list&lt;Platform * &gt; Platform::Platform_list; //статическое поле класса Platform перебираем элементы и удаляем их при...

Ошибка при запуске программы "vector iterator not incrementable" - C++
при запуске программы (без разницы какой функции) вылетает ошибка (заг. темы) как это исправить? мне кажется, что проблема в том, что я...

Vector iterator not incrementable - C++
Здравствуйте. Подскажите, из-за чего не работает код? При запуске программы появляется ошибка: &quot;... expression: vector iterator not...

Синхронизация map и vector. Iterator not incrementable - C++
День добрый. Надо синхронизровать vector и map, чтобы в них были только одинаковые элементы. Вот мой код, который выбрасывает ошибку....

Map/set iterator not dereferencable - C++
Всем доброго времени суток. Суть задания в том, чтобы удалить повторы комбинаций чисел в multimap'e. Проблема в том, что появляется данная...

Map/set iterator not dereferencable - C++
Есть два класса, первый: class AnimationManager { public: String currentAim; std::map&lt;String, Animation&gt; animList; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.12.2013, 12:59 #2
triadec_96, Зачем в первом цикле вообще используется переменная it?
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
03.12.2013, 13:16  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Зачем в первом цикле вообще используется переменная it?
Понял.Спасибо)
Но теперь выбивает ошибку: string subscript out of range.
Но выбивает её только тогда,когда нету в предложении каких-то заданых букв.

Добавлено через 15 минут
Строки 14-15
C++
1
2
for(i=0;i<sizeof(str);i++)
        c.insert(str[i]);
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.12.2013, 13:20 #4
triadec_96, sizeof(str) это размер объекта string. Для кол-ва символов используйте str.size() или str.length().
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
03.12.2013, 13:23  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
triadec_96, sizeof(str) это размер объекта string. Для кол-ва символов используйте str.size() или str.length().
Спасибо.А какая разница между sizeof(str) и str.size().Они дают разные значения?
Теепрь 14-я строка имеет такой вид:
C++
1
for(i=0;i<str.size();i++)
Но когда ввожу "kp KP ",то в результате ничего не выводится.Типа все буквы есть в сете.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.12.2013, 14:01 #6
triadec_96, Да, они дают разные значения.
Alex5
1052 / 715 / 105
Регистрация: 12.04.2010
Сообщений: 1,810
03.12.2013, 16:43 #7
triadec_96, Из-за того, что массив l[] не инициализирован, там (с большой вероятностью) все элементы true. Так как любое ненулевое целое после приведения к типу bool даёт true.
Попробуйте написать
C++
1
bool l[14] = { false };//каждый l отвечает своей букве в массиве символов "а"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 16:43
Привет! Вот еще темы с ответами:

map/set iterator not dereferencable - C++
map&lt;string,int&gt; optimized(map&lt;string,int&gt;&amp;dict){ map&lt;string,int&gt;::iterator i=dict.begin(); map&lt;string,int&gt;::iterator j=dict.begin(); ...

Map/set!( iterator not dereferencable) - C++
Есть функция,в которой происходит поиск в map по ключу. Если по данному ключу нет значения, то необходимо провести интерполяцию двух...

Детектировать, является ли контейнером set или является multiset - C++
здравствуйте, вот есть детектирование является ли контейнер map или multimap: template&lt; typename... &gt; using void_t = void; ...

Ошибка с map контейнером - C++
Всем привет , может кто подсказать, что я делаю не правильно ? Вылезает ошибка , чтобы я ни делал . Пытаюсь рекурсивно переходить на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.12.2013, 16:43
Ответ Создать тему
Опции темы

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