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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
#1

deque iterator not dereferencable - C++

07.04.2013, 12:02. Просмотров 1831. Ответов 15
Метки нет (Все метки)

итак
программа должна считывать из файла данные об автобусных маршрутах (имя водителя, номер маршрута и т.д.). После этого сортировать сложной сортировкой (сначала по №автобуса и затем по №маршрута). Затем удалить из контейнера указанного водителя (прописные и строчные буквы в именах не различать).
у меня написан функциональный объект для того, что сравнивать элементы дека с введенной фамилией. Ошибок на этапе компиляции нет, сортирует нормально, но после ввода фамилии выскакивает такая ошибка: "deque iterator not dereferencable"
Версия программы не оконательная, т.е. тут ничегоне удаляется, потому как на этапе проверки, то ли нашел find_if выскакивает вот эта ошибка

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
#include <functional>
#include <string>
#include <time.h>
using namespace std;
string ToLower (const string & a){
    string temp(a);
    for (int i=0;i<temp.length();i++)
    {
        if (temp[i]>='A' && temp[i]<='Z')
            temp[i]=tolower(temp[i]);
        else 
            if (temp[i]>='А' && temp[i]<='Я')
                temp[i]=_tolower(temp[i]);
    }
    return temp;
}
bool comp(const string & a, const string & b){
    return (ToLower(a)<ToLower(b));
}
struct way{
    int marsh;
    string Name;
    int aut;
    string Mark;
    friend ostream & operator <<(ostream & out,way & a)
    {
        out<<a.marsh<<" "<<a.Name<<" "<<a.aut<<" "<<a.Mark<<" ";
        return out;}
    bool operator ==(way &a )
    {
        return (ToLower(Name)==ToLower(a.Name));}
};
class pred{
    string s;
public:
    pred (const string & s):s(s){};
    bool operator () (const way & a){return (ToLower(a.Name)==ToLower(s));}
};
bool waycmp(const way & a, const way & b)
{
    if (a.aut<b.aut) return true;
    if (a.aut==b.aut)
        if (a.marsh<b.marsh)
            return true;
    return false;
}
int main ()
{
    setlocale (LC_ALL,".1251");
    ifstream in("input.txt");
    if (!in)
    {
        cout<<"Файл не найден"<<endl;
        in.close();
        return 0;}
    int n;
    in>>n;
    if (n<=0)
    {
        cout<<"Неверные данные в файле"<<endl;
        in.close();
        return 0;}
    deque<way> d(n);
    for (int i=0;i<n;i++)
    {
        in>>d[i].marsh>>d[i].Name>>d[i].aut>>d[i].Mark;}
    for (int i=0;i<n;i++)
        cout<<d[i]<<endl;
    cout<<endl;
    sort(d.begin(),d.end(),waycmp);
    cout<<"**********************************"<<endl;
    for (int i=0;i<n;i++)
        cout<<d[i]<<endl;
    cout<<endl;
    cout<<"Введите фамилию водитела, которого хотите удалить"<<endl;
    string name;
    cin>>name;
    deque<way>::iterator i;
    i=find_if(d.begin(),d.end(),pred(name));
    cout<<*i<<endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2013, 12:02     deque iterator not dereferencable
Посмотрите здесь:

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

Ошибка list iterator not dereferencable - C++
Ошибка при использовании итератора. Хэлп, сос :cry: void client_login(list&lt;client&gt; client_list) { char name, login, password,...

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

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++
Всем доброго времени суток. Суть задания в том, чтобы удалить повторы комбинаций чисел в multimap'e. Проблема в том, что появляется данная...

Ошибка "iterator not dereferencable" при использовании ссылки - C++
Всем привет. Без ссылки все работает, с ссылкой ошибка: &quot;iterator not dereferencable&quot;. С ссылкой: void func(vector&lt;string&gt;&amp; arr) ...

std::sort(iterator, iterator, method) подскажите как исправить - C++
Уважаемые Знатоки!!! Вашему вниманию предоставляю код: #include &quot;stdafx.h&quot; #include &lt;vector&gt; #include &lt;algorithm&gt; class...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iifat
2225 / 1378 / 102
Регистрация: 05.06.2011
Сообщений: 3,799
07.04.2013, 12:25     deque iterator not dereferencable #2
input.txt-то приложи
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 12:26  [ТС]     deque iterator not dereferencable #3
12
100 Новицкий 21 Маз
100 Лихач 22 Ман
123 Леонович 23 Камаз
101 Новицкий 21 Маз
101 Лихач 22 Ман
123 Леонович 23 Камаз
102 новицкий 21 маз
100 Иванов 22 Ман
123 Сидоров 23 Камаз
103 Новицкий 21 Маз
101 лихач 22 ман
123 Петров 23 Камаз
iifat
2225 / 1378 / 102
Регистрация: 05.06.2011
Сообщений: 3,799
07.04.2013, 13:50     deque iterator not dereferencable #4
Хм. Скомпилил. gcc (Gentoo 4.5.3-r2 p1.1, pie-0.4.7) 4.5.3. Вот протокол.

100 Новицкий 21 Маз
100 Лихач 22 Ман
123 Леонович 23 Камаз
101 Новицкий 21 Маз
101 Лихач 22 Ман
123 Леонович 23 Камаз
102 новицкий 21 маз
100 Иванов 22 Ман
123 Сидоров 23 Камаз
103 Новицкий 21 Маз
101 лихач 22 ман
123 Петров 23 Камаз

**********************************
100 Новицкий 21 Маз
101 Новицкий 21 Маз
102 новицкий 21 маз
103 Новицкий 21 Маз
100 Лихач 22 Ман
100 Иванов 22 Ман
101 Лихач 22 Ман
101 лихач 22 ман
123 Леонович 23 Камаз
123 Леонович 23 Камаз
123 Сидоров 23 Камаз
123 Петров 23 Камаз

Введите фамилию водитела, которого хотите удалить
лихач
101 лихач 22 ман

Может, не то, чего ты хотел, но и ошибок никаких. А ты какую фамилию вводил?
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,453
Завершенные тесты: 3
07.04.2013, 13:53     deque iterator not dereferencable #5
Цитата Сообщение от mazukta26 Посмотреть сообщение
C++
1
2
i=find_if(d.begin(),d.end(),pred(name));
cout<<*i<<endl;
find_if может вернуть d.end(), поэтому надо что-нибудь вроде
C++
1
2
3
4
5
6
i = find_if(d.begin(), d.end(), pred(name));
if (i != d.end()) {
   cout << *i << endl;
} else {
   cout << "Не найдено" << endl;
}
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 13:59  [ТС]     deque iterator not dereferencable #6
хм
у меня ошибка не исчезает
точнее, если учесть возможность возврата d.end(), то ошибки нет
но и не выводит ничего, стало быть, ничего и не находит

Добавлено через 1 минуту
но не может же быть, что в visual studio не находит ничего,а в gcc находит
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,453
Завершенные тесты: 3
07.04.2013, 14:02     deque iterator not dereferencable #7
mazukta26, возможно tolower не понимает русский.
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 14:06  [ТС]     deque iterator not dereferencable #8
tolower не понимает, а вот _tolower понимает)
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,453
Завершенные тесты: 3
07.04.2013, 14:08     deque iterator not dereferencable #9
Цитата Сообщение от mazukta26 Посмотреть сообщение
C++
1
if (temp[i]>='А' && temp[i]<='Я')
Так вроде только с латинецей можно, возможно в этом проблема.
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 14:09  [ТС]     deque iterator not dereferencable #10
опять же, должно работать, тут ведь сравнение по коду + в других программах работает)
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,453
Завершенные тесты: 3
07.04.2013, 14:14     deque iterator not dereferencable #11
Вообщем, что то там внутри предиката не так, раз find_if так себя ведёт.

Добавлено через 4 минуты
Цитата Сообщение от mazukta26 Посмотреть сообщение
опять же, должно работать
Русские символы не обязаны идти по порядку в кодировке.
iifat
2225 / 1378 / 102
Регистрация: 05.06.2011
Сообщений: 3,799
07.04.2013, 14:32     deque iterator not dereferencable #12
Кстати, да, я-то в Линуксе запускал, доже не скажу навскидку, что там за кодировка.
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 16:04  [ТС]     deque iterator not dereferencable #13
они действительно идут по порядку за исключением буквы Ё
iifat
2225 / 1378 / 102
Регистрация: 05.06.2011
Сообщений: 3,799
07.04.2013, 19:26     deque iterator not dereferencable #14
Кстати! В Винде ж две кодировки! Одна в графике, другая -- в текстовой сессии. Вполне возможно, у тебя фамилия корёжится.
Попробуй записать фамилию в текстовый файл и программу запустить примерно так:
Bash
1
test < fam.txt
Если сработает, значит, дело в этом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2013, 21:47     deque iterator not dereferencable
Еще ссылки по теме:

Compair deque - C++
есть два списка. Теперь мне нужно сравнить элементы если х &lt;у то return (x+y) . я так думаю надо результат в 3 список записать как мне...

deque<float> - C++
Создать контейнер deque и заполнить его типом данных &lt;float&gt;, вывести на экран. Удалив одни элементы и заменив другие вывести на экран...

STL deque - C++
Устройство, основные операции и их стоимость, особенности использования deque. Ни где не могу найти стоимость выполнения основных...

std::deque - C++
Как известно при добавлении в конец вектора элементов(и не только в конец) может возникнуть перераспределение памяти что переместит данные...

Контейнер deque - C++
Задание:(используя контейнер deque) ввести последовательность натуральных чисел,у конце которой 0.Не сохраняя всей последовательности в...


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

Или воспользуйтесь поиском по форуму:
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 21:47  [ТС]     deque iterator not dereferencable #15
я не очень понимаю, что нужно сделать Т_Т
Yandex
Объявления
07.04.2013, 21:47     deque iterator not dereferencable
Ответ Создать тему
Опции темы

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