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

Ошибка при запуске программы "vector iterator not incrementable" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Произведение матриц, выход за границу массива http://www.cyberforum.ru/cpp-beginners/thread1070156.html
#include <iostream> #include <stdlib.h> #include <time.h> #include <cmath> #include <math.h> using namespace std; void tselyi1(int **mas, int const n,int const m); void tselyi2(int **mas, int const n,int const m);
C++ GTKMM tutorial туториал решил добавить этот туториал по GTKMM 3.0** так как качественных туториалов очень мало по этому GUI*. *-если вас задолбало консольное окно и хотите создать графическое приложени, (первую нормальную программу) то вам надо выбрать Graphic User Interface для него, один из которых и есть GTKMM . **-для тех кто незнает вкратце GTKMM это GTK+ написаный на C++ следовательно для тех новичков... http://www.cyberforum.ru/cpp-beginners/thread1070148.html
C++ Массив структур. Структура «Читатель»
поомогите ктонить. Структура «Читатель»: Фамилия И.О., номер читательского билета, название книги, срок возврата. Вывести читателей, название книги у которых начинаются с буквы ‘Л’. кто нибуть может объяснить как вывести этих читателей книги у каторых книги называются с буквы "Л" vs2010 #include "stdafx.h" #include<stdio.h> #include<conio.h> #include <iostream> using namespace std;
Рекурсивно найти n-ую производную для заданого x. Результат похож на шестнадцатеричный код C++
Задание:рекурсивно найти n-ую производную f(x)={e}^{(a{x}^{2}+bx+c)} для заданого x,построив для {f}^{(n)}(x) рекурентное соотношение. Получилась такая рекуррентная формула для n-ой производной: {f}^{(n)}(x)=2(n-1)a{f}^{(n-2)}+(2ax+b){f}^{(n-1)} Думаю,код и без комментариев вы поймёте #include <iostream> #include <conio.h> #include <math.h> using namespace std; int n,x,a,b,c; double...
C++ Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора http://www.cyberforum.ru/cpp-beginners/thread1070073.html
Здравствуйте. Буду очень благодарен,если кто нибудь напишет два кода к этим задачам. Спасибо за внимание. Задача 1. Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора. Задача 2. Дана матрица размерностью N*M. Найти сумму максимальных элементов в строках матрицы.
C++ Множество, LIFO, FIFO Добрый день. Дали список задач для курсача, но не могу понять что требуется в некоторых из них... был бы благодарен за помощь. 1) Множество. Сказали надо создать множество из 256 бит и что бы код символа(ASCII?) отвечало за его положение в массиве. 1 бит - 1 элемент. Не могу понять как именно это сделать? надо будет еще реализовать добавление и удалиение... Единственное что приходит в голову... подробнее

Показать сообщение отдельно
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
13.01.2014, 15:47  [ТС]     Ошибка при запуске программы "vector iterator not incrementable"
Цитата Сообщение от egor2116 Посмотреть сообщение
У вас
C++
1
2
private:
    vector <T> data;
а вы что делаете
C++
1
res1.data.push_back(*it1);
и так везде.
C++
1
2
3
Menge Peresechenie(Menge& y)
///...
y.data.begin();
используйте вместо
C++
1
vector<T>::iterator it1;
C++
1
typename vector<T>::iterator it1;
1-что не так с res.data.push_back()?
я обращаюсь к вектору объекта res и заполняю необходимыми элементами
2-использовал, что должно было измениться?

Добавлено через 36 минут
я поменял, и теперь у меня возникает ошибка vector iterator not deferenceble

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
 
 
 
 
using namespace std;
//=============================
 
template <typename T> class Menge
{
private:
    vector <T> data;
public:
    Menge(int n=0)
    {
        if(n>0)
        {
            data.reserve(n);        
            cout << "Введите элементы множества: " << endl;
            T k;
            for(int i=0; i<n; i++)
            {
                cin >> k;
                data.push_back(k);
            }
        }
    }
    ~Menge()
    {
        data.clear();
    }
    //-------
    //Вывод вектора
    void print()
    {
        vector<T>::iterator it;
        cout << "vector: " << endl;
        cout << "{ ";
        for(it=data.begin(); it!=data.end(); it++)
        {
            cout << *it << ", ";
        }
        cout << " }";
        cout << endl;
    }
    
    
    //Функция операции разность
    //в результирующий вектор будут записаны только те элементы,
    //которые есть в исходном векторе, но нет в переданном
    //(размер будет состоять из элементов мн-ва А минус элементы мн-ва B)
    Menge Raznost(Menge& y)
    {
        Menge<T> res;
        typename vector<T>::iterator it1=data.begin(), it2=y.data.begin();
 
        for(it1; it1!=data.end(); it1++)
        {       
            if (*it1!=*it2)
            {
                    res.data.push_back(*it1);
                    it2++;
            }
        }
        return res;
    }
    //-------------------------------
    //Функция операции пересечение
    //в результирующий вектор будут добавлены элементы,
    //которые есть и в исходном векторе, и в переданном функции
    //(размер будет состоять из кол-ва общих элементов мн-ва А и мн-ва B)
    Menge Peresechenie(Menge& y)
    {
        Menge<T> res;
        typename vector<T>::iterator it1=data.begin(), it2;
 
        for(it1; it1!=data.end(); it1++)
        {
            for(it2=y.data.begin(); it2!=y.data.end(); it2++)
            {
                if (*it1==*it2)
                {
                    res.data.push_back(*it1);
                }
            }
        }
        return res;
    }
    //-------------------------------
    //Функция операции пересечение
    //в результирующий вектор будут добавлены элементы исходного вектора,
    //и элементы из 2, но не совпадают с элементами из 1
    //(размер будет состоять из суммы размеров мн-ва А и мн-ва B)
    Menge Obyedinenie(Menge& y)
    {
        Menge<T> res;
        typename vector<T>::iterator it1=data.begin();
        typename vector<T>::iterator it2=y.data.begin();
        for(it1=data.begin(); it1!=data.end(); it1++)
        {
            res.data.push_back(*it1);
        }
        typename vector<T>::iterator it3=res.data.begin();
        for(it3; it3!=res.data.end(); it3++)
        {
            for(it2=y.data.begin(); it2!=y.data.end(); it2++)
            {
                if (*it3!=*it2)
                {
                    res.data.push_back(*it2);
                }
            }
        }
        return res;
    }
    //-------------------------------
    //Функция операции прямое произведение
    //в результирующий вектор будут добавлены элементы,
    //составленные из произведения элементов
    //исходного вектора и передаваемого 
    //(размер будет состоять из произведения мн-ва А и мн-ва B)
    Menge PryamoeProizvedenie(Menge& y)
    {
        Menge<T> res;       
        typename vector<T>::iterator it1, it2;
        for(it1=data.begin(); it1!=data.end(); it1++)
        {
            for(it2=y.data.begin(); it2!=y.data.end(); it1++)
            {
                res.data.push_back((*it1)*(*it2));
            }
        }
        return res;
    }
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    int a=5;
    int b=6;
    Menge<float> A(a);
    A.print();
    Menge<float> B(b);
    B.print();
    Menge<float> R1;
    /*cout << "Попытка вывести вектор: (пересечение)" << endl;
    R1=A.Peresechenie(B);
    R1.print();
    R1.~Menge();
    cout << "Попытка вывести вектор: (разность)" << endl;   
    R1=A.Raznost(B);
    R1.print();
    R1.~Menge();     */
    /*cout << "Попытка вывести вектор: (объединение)" << endl;
    R1=A.Obyedinenie(B);
    R1.print();
    R1.~Menge();  */
    cout << "Попытка вывести вектор: (ПП)" << endl;
    R1=A.PryamoeProizvedenie(B);
    R1.print();
    R1.~Menge();
    system("pause");
    return 0;
}
функция пересечение работает, с остальными косяк ^
 
Текущее время: 08:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru