Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2018, 17:46   #1
pacha.i
Пользователь
 
Регистрация: 06.10.2017
Сообщений: 32
По умолчанию Итераторы

Здравствуйте. Изучаю итераторы(вектор). Не выполняется программа(Прекращение работы программы). Укажите ,пожалуйста, на ошибку. Кодблокс, gcc. Спасибо.
Код:
#include <iostream>
#include <vector>

using namespace std;

int main()
{

    vector<int> a;
    vector<int>:: iterator b = a.begin();
     a.push_back(2);
     a.push_back(3);
     cout << *b;



    return 0;
}
pacha.i вне форума Ответить с цитированием
Старый 05.03.2018, 17:55   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Итератор надо создать после добавления.
waleri вне форума Ответить с цитированием
Старый 05.03.2018, 18:05   #3
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Любые операции с вектором, меняющие его размер делаю итератор не верным (точнее, там разные случаи, но читайте доки точнее) + изначально вектор пустой, т.о. итератор итератор начала = концу = нельзя разыменовывать

Код:
#include <iostream>
#include <vector>

using namespace std;

int main()
{

    vector<int> a;

     a.push_back(2);
     a.push_back(3);
    
vector<int>:: iterator b = a.begin();

     cout << *b;



    return 0;
}
alexzk вне форума Ответить с цитированием
Старый 05.03.2018, 18:15   #4
pacha.i
Пользователь
 
Регистрация: 06.10.2017
Сообщений: 32
По умолчанию

Спасибо большое.
pacha.i вне форума Ответить с цитированием
Старый 05.03.2018, 22:25   #5
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

+1 рекомендую опуститься на C и изучить работу с указателями (ссылками) на динамические структуры.
Итераторы имеют аналогичный принцип, но из-за работы через интерфейс объекта, некоторые естественные вещи оказываются не очевидными.
СтудПом вне форума Ответить с цитированием
Старый 05.03.2018, 22:47   #6
pacha.i
Пользователь
 
Регистрация: 06.10.2017
Сообщений: 32
По умолчанию

Еще один вопрос. Последовательность в вставке. Там же и ошибка.Может это устаревшее.
Код:
#include <iostream>
#include <vector>



using namespace std;

int main()
{
     int c[]={1,2,3,4,5,6};
     vector<int> a(c,c+6); // инициализация
     vector<int>:: iterator b=a.begin(); // итератор
     a.insert(b+1,{7,8,9});  // здесь показывает ошибку
     for(int i=0;i<6;i++)    // печать
        cout << a[i] << " ";


    return 0;
}
pacha.i вне форума Ответить с цитированием
Старый 05.03.2018, 22:53   #7
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Не тот тип. И вообще, кажется полный фарш уже на инициализации: вектор целых инициализируете указателем на целое.
СтудПом вне форума Ответить с цитированием
Старый 05.03.2018, 22:57   #8
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

У меня работает:
Код:
1 7 8 9 2 3
Black Fregat вне форума Ответить с цитированием
Старый 06.03.2018, 08:32   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от СтудПом Посмотреть сообщение
И вообще, кажется полный фарш уже на инициализации: вектор целых инициализируете указателем на целое.
Вы о чем? Там стандартный конструктор от начала и конца диапазона.

Код:
 a.insert(b+1,{7,8,9});  // здесь показывает ошибку
Какой компилятор и версия? Флаги для с++11 включены?
p51x вне форума Ответить с цитированием
Старый 06.03.2018, 08:42   #10
pacha.i
Пользователь
 
Регистрация: 06.10.2017
Сообщений: 32
По умолчанию

Gcc. Про флаги и версию сказать затрудняюсь. Вариант а.insert(b+1, 7) работает. Версию gcc посмотрю.
pacha.i вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
классы, итераторы dykee Общие вопросы C/C++ 0 14.05.2015 00:34
классы ,итераторы dykee Помощь студентам 0 13.05.2015 14:33
Контейнер и итераторы Blind Guard Общие вопросы C/C++ 0 18.05.2013 22:34
Итераторы Jamguranga Visual C++ 0 04.04.2013 17:45
Адаптеры и итераторы Mandrivnyk Общие вопросы C/C++ 2 18.11.2011 18:27