Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
#1

vector(выскакивает ошибка "vector iterators incompatible") - C++

26.03.2013, 17:12. Просмотров 2282. Ответов 16
Метки нет (Все метки)

Доброго времени суток! имеется следующий код:

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
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;
 
void print(int elem)
{
    cout << elem << ' ';
}
 
int _tmain(int argc, _TCHAR* argv[])
{   
    vector<int> coll;
    //создание конечного итератора для coll
    //не удобный способ
 
    back_insert_iterator<vector<int> > iter(coll);
 
    //вставка элемента через обычный интерфейс итераторов
    *iter = 1;
    iter++;
    *iter = 2;
    iter++;
    *iter = 3;
 
    for_each(coll.begin(), coll.end(), print);
    cout << endl;
 
    //создание конечно итератора и вставка элементов
    //удобный способ
 
    back_inserter(coll) = 44;
    back_inserter(coll) = 55;
 
    for_each(coll.begin(), coll.end(), print);
    cout << endl;
 
    /*присоединение всех элементов контейнера с использованием
    конечно итератора вставки
    резервирование памяти для предотвращения ее перераспределения*/
 
    coll.reserve(2*coll.size());
    copy(coll.begin(), coll.end(),                      //источник
                       back_inserter(coll));            //приемник
 
    for_each(coll.begin(), coll.end(), print);
    cout << endl;
 
    cout << "\n\n";
    return 0;
}
выскакивает ошибка "vector iterators incompatible" делал все по книге, перепроверял, все так, но ошибка выскакивает... заранее благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2013, 17:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос vector(выскакивает ошибка "vector iterators incompatible") (C++):

Оибка vector iterators incompatible ? - C++
привет всем ! вот код class rgb2hsl { public: rgb2hsl(vector&lt;int&gt; r, vector&lt;int&gt; g , vector&lt;int&gt; b): R(r.begin(), r.end()),...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Программа аварийно завершается с ошибкой "map/set iterators are incompatible" - C++
Добрый день! Проблема такая: в s1 и s2 рандомно добавляю числа, хочу найти объединение этих множеств. Если использовать такой код, то все в...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

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

Ошибка: "Идентификатор vector не определен" - C++
пишу в MS Visual 2017 подскажите пожалуйста почему вдруг не определен vector хочу сделать двумерный вектор #include &lt;vector&gt; ...

16
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
26.03.2013, 17:34 #2
я так понимаю ошибка выскакивает в районе 26й строки? Ты ведь вектор объявил и ничем его не заполнил, перед изменением значения элемента, на который указывает итератор следует проверять не вышел ли он за допустимый диапазон. вообще, насколько я знаю, итераторы для вектора возвращают ф-ции ".begin()" и ".end()". З.Ы. что за книга?

Добавлено через 44 секунды
в общем твой итератор, походу, указывает не на элемент твоего вектора а неизвестно куда
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.03.2013, 17:58  [ТС] #3
igor001, ошибка выскакивает в 49-50 строке... книга С++ Стандартная библиотека для профессионалов.

Добавлено через 3 минуты
igor001,
Цитата Сообщение от yoghurt92 Посмотреть сообщение
back_insert_iterator<vector<int> > iter(coll)
все ровно что

C++
1
coll.push_back()
так что работать должно, проблема при копировании...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 18:29 #4
C++
1
2
copy(coll.begin(), coll.end(),                      //источник
                       back_inserter(coll));            //приемник
тут итератор end() "протухает" и скорее всего итератор begin() тоже, если в момент работы функции делалось перераспределение памяти, а оно почти 100% делалось, т.к. размер вектора увеличился в 2 раза.
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 18:35 #5
delete
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.03.2013, 18:35  [ТС] #6
Kastaneda,
Цитата Сообщение от yoghurt92 Посмотреть сообщение
coll.reserve(2*coll.size());
я специально зарезервировал память чтобы предотвратить перераспределение и итераторы не "протухли"....
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 18:37 #7
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Kastaneda,


я специально зарезервировал память чтобы предотвратить перераспределение и итераторы не "протухли"....
А точно, не заметил. Я еще удивился почему у меня без ошибки все отработало.

Добавлено через 48 секунд
yoghurt92, а какой компилятор?
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.03.2013, 18:40  [ТС] #8
Kastaneda, у меня VS 2008...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 18:43 #9
Даже хз, может в 2008 STL как-то криво реализована, хотя врядли конечно..
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.03.2013, 18:45  [ТС] #10
Kastaneda, а у вас все нормально сработало?
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 18:48 #11
Цитата Сообщение от yoghurt92 Посмотреть сообщение
Kastaneda, а у вас все нормально сработало?
Ага, в g++ нормально и сейчас под винду ребутнулся, в VS 2012 тоже нормально.
1
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.03.2013, 18:50  [ТС] #12
Kastaneda, значит это что-то у меня... спасибо вам, хоть буду знать, что не я виноват
0
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
27.03.2013, 10:27 #13
Цитата Сообщение от yoghurt92 Посмотреть сообщение
igor001, ошибка выскакивает в 49-50 строке... книга С++ Стандартная библиотека для профессионалов.

Добавлено через 3 минуты
igor001,


все ровно что

C++
1
coll.push_back()
так что работать должно, проблема при копировании...
хз, у меня RAD Studio такой итератор ( back_insert_iterator<vector<int> > iter(coll); ) не знает и ругает меня за то что я попытался его использовать
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
27.03.2013, 10:28 #14
igor001, там в коде <iterator> надо инклюдить. ТС видать забыл.
0
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
27.03.2013, 11:11 #15
кстати да, есть у меня такая проблема, забывать подключать библиотеки в новом проекте))
0
27.03.2013, 11:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2013, 11:11
Привет! Вот еще темы с ответами:

Ошибка [Linker error] undefined reference to `Vector::Vector(int)' - C++
Добрый день. Делал по методички, и почему-то валятся ошибки... файл lab9_main.cpp #include &lt;iostream&gt; #include &quot;Vector.h&quot; int...

namespace "std" has no member "vector" - C++
Собственно такая проблема, мне нужно использовать в программе std::vector, однако VC ругается, мол нет ни каких векторов в std. Люди...

Генератор Кроссвордов выдает ошибку "Vector subscript out of range" - C++
Написал программу для курсовой, смысл в том что программа создает кроссворд из заданных слов в заданной сетке, однако при запуске выдают...

Исправить ошибку "Vector iterator not dereferancable" - C++
Всех с наступающим Новым Годом! У меня возникла проблема с вот этой функцией (я пытаюсь реализовать алгоритмы stl, чтобы лучше в них...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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