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

deque iterator not dereferencable - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ оформление и выборка какой тест пройти http://www.cyberforum.ru/cpp-beginners/thread830353.html
У меня есть готовая программа "тест", мне нужно её дополнить, чтобы было меню, где выбираем какой тест проходить. И чтобы можно было добавлять новые тесты (файлы),и если не сложно про какой нить интерфейс ресурс кинуть, раньше просто подобное не делал, желательно побольше инфы покидайте. Тест #include "iostream" #include "time.h" #include "iomanip" using namespace std; int _tmain(int...
C++ "Специальные штуки" в С++ Здравствуйте! Ни для кого не секрет, что в С++ много классных штучек, которые облегчают создание программы. Например sort,next_permutation, queue и многое другое. Вот только увы, кроме sort я ничего не знаю :( Киньте пожалуйста ссылку, где можно было бы все это просмотреть. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread830335.html
C++ Даны три числа. Найти сумму двух наибольших из них
Дана задача: даны три числа. Найти сумму двух наибольших из них. С применением if.
C++ Поиск универсального алгоритма LU разложения
Реализовал LU разложение методом Гаусса, но тестируя приложение вылезло условие при котором этот алгоритм не действует, потом вспомнил что и в теории по линейной алгебре такое было:), элемент матрицы а11!=0. На форуме много кодов для UL-разложения, но у них такая же проблема. По форуму посмотрел, но не нашел решения проблемы. Нужна теория по LU разложению, может есть универсальный алгоритм?
C++ Исправить код, реализующий алгоритм сортировки http://www.cyberforum.ru/cpp-beginners/thread830317.html
Доброе утро. Сделал попытку реализовать функцию сортировки простым двухпутевым слиянием, но не вышло. При запуске происходит ошибка, имправить которую никак не удаётся. Вот код с комментариями: //Метод простого двухпутевого слияния void SimpleMerge (int * data, int size) { int * p_write = new int ; //вспомогательный массив для записи int * p_read(data);
C++ Работа с матрицами. Переписать вторую матрицу, так , чтобы элемент, находящийся на пересечении 1 строки и 2 столбца равнялся 1... у меня есть пустая матрица a. И есть матрица вида 1 2 1 4 1 7 2 4 Как мне переписать вторую матрицу, так , чтобы элемент, находящийся на пересечении 1 строки и 2 столбца равнялся 1, на пересечении 1 строки и 4 столбца равнялся 1 и т.д., до конца второй матрицы. А все оставшиеся эементы равнялись 0? подробнее

Показать сообщение отдельно
mazukta26
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 36
07.04.2013, 12:02     deque iterator not dereferencable
итак
программа должна считывать из файла данные об автобусных маршрутах (имя водителя, номер маршрута и т.д.). После этого сортировать сложной сортировкой (сначала по №автобуса и затем по №маршрута). Затем удалить из контейнера указанного водителя (прописные и строчные буквы в именах не различать).
у меня написан функциональный объект для того, что сравнивать элементы дека с введенной фамилией. Ошибок на этапе компиляции нет, сортирует нормально, но после ввода фамилии выскакивает такая ошибка: "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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru