Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Заблокирован
1

Можно ли итератор вектора декрементировать?

19.11.2015, 17:27. Показов 977. Ответов 23
Метки нет (Все метки)

Добрый день !

Можно ли итератор вектора декрементировать ?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2015, 17:27
Ответы с готовыми решениями:

Можно ли при использовании вектора не использовать итератор?
можно ли при использование вектора не использовать итератор?

Итератор вектора
Только начал изучать STL. Проблема с итератором. conversion from 'std::vector<Alfa>::iterator...

Итератор для вектора
Привет, столкнулся с тем что при использовании stl вектора понадобился итератор перехода на элемент...

Почему не запоминается правильно итератор вектора?
Почему, если сделать что-то такое: #include <iostream> #include <vector> using namespace...

23
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
19.11.2015, 17:31 2
Цитата Сообщение от RAFA91 Посмотреть сообщение
Можно ли итератор вектора декрементировать ?
он random-access
1
Заблокирован
19.11.2015, 17:42  [ТС] 3
не могу понять почему вылазит аварийное завершение в строке 14

erase же возвращает итератор на следующий элемент.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> v(10);
    cout<<"v.size() = "<<v.size()<<endl;
    for (int i=0;i<v.size();i++) v[i]=i+10;
    vector<int> :: iterator p = v.begin();
    for (;p!=v.end();p++) cout<<*p<<" ";
    cout<<endl;
    
    p = v.begin();
    p = p+5;
    v.erase(p);
    
    cout<<*p<<" ";
    return 0;
}
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
19.11.2015, 17:46 4
C++
1
p = v.erase(p);
0
Заблокирован
20.11.2015, 15:06  [ТС] 5
а ну да. Спасибо !

подумал что сама erase перекидывает итератор.

хотя было бы не плохо.

Добавлено через 32 минуты
кстати выполнение

C++
1
2
3
v.erase(p);
    p++;
    cout<<*p<<" ";
тоже не дало положительного результата.

Добавлено через 20 часов 45 минут
для чего в векторе метод который return ссылку на последний элемент ?

почему не на первый или пятый ?
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
20.11.2015, 15:09 6
Цитата Сообщение от RAFA91 Посмотреть сообщение
для чего в векторе метод который return ссылку на последний элемент ?
почему не на первый или пятый ?
Для чего у человека голова сверху, а не снизу или посередине?
1
Заблокирован
20.11.2015, 15:44  [ТС] 7
Цитата Сообщение от Croessmah Посмотреть сообщение
Для чего у человека голова сверху, а не снизу или посередине?
я задал вопрос не по анатомии а по вектору.

Добавлено через 34 минуты
как печально что тут
C++
1
v.insert(p,3,500);
нету возврата итератора. опять эти завершения программы лезут.
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
20.11.2015, 15:50 8
Цитата Сообщение от RAFA91 Посмотреть сообщение
а по вектору.
тогда очевидно - чтобы получить доступ к последнему элементу
Цитата Сообщение от RAFA91 Посмотреть сообщение
нету возврата итератора.
Начиная с С++11 есть.
0
Заблокирован
20.11.2015, 16:01  [ТС] 9
Цитата Сообщение от Croessmah Посмотреть сообщение
тогда очевидно - чтобы получить доступ к последнему элементу
да не все норм. я просто не до смотрел всех методов. там мона получить ссылочку на любой элемент.
Цитата Сообщение от Croessmah Посмотреть сообщение
Начиная с С++11 есть.
не все студенты которые будут читать темы знают С++11 и я тоже.
0
2542 / 1201 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
20.11.2015, 16:14 10
Цитата Сообщение от RAFA91 Посмотреть сообщение
не все студенты которые будут читать темы знают С++11 и я тоже.
ну да - сейчас же всего 2015 год, зачем знать 11 стандарт. Ближе к 2018 он будет еще более актуальным ...................................
0
Заблокирован
20.11.2015, 17:27  [ТС] 11
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
ну да - сейчас же всего 2015 год, зачем знать 11 стандарт. Ближе к 2018 он будет еще более актуальным
раньше ж как то обходились без этих примочек.

к примеру что это
C++
1
2
for (auto & e : cont)
        std::cout << e << std::endl ;
на цикл не шибко смахивает
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
20.11.2015, 17:32 12
Цитата Сообщение от RAFA91 Посмотреть сообщение
к примеру что это
the range-based for statement
Цитата Сообщение от RAFA91 Посмотреть сообщение
на цикл не шибко смахивает
да ладно? В куче других языков присутствует и никто не жалуется.
Цитата Сообщение от RAFA91 Посмотреть сообщение
раньше ж как то обходились без этих примочек.
раньше и без компов обходились, предлагаете вернуться к глиняным табличкам и охоте на мамонтов?
0
Заблокирован
20.11.2015, 17:57  [ТС] 13
Цитата Сообщение от Croessmah Посмотреть сообщение
В куче других языков присутствует и никто не жалуется.
в вижуале 8 работать будет ?

Добавлено через 15 минут
это типо этого ?

C#
1
2
3
4
5
int a[]={1,2,3,4,5};
    for each (int x in a) 
    {
        Console::WriteLine("____________ {0}",x);
    }
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
20.11.2015, 18:00 14
RAFA91, да, оно как for-each.
в вижуале 8 работать будет ?
А проверить?
0
Заблокирован
20.11.2015, 18:11  [ТС] 15
Цитата Сообщение от Croessmah Посмотреть сообщение
А проверить?
в проекте CLR работает только for each
0
Don't worry, be happy
17172 / 10055 / 1935
Регистрация: 27.09.2012
Сообщений: 25,048
Записей в блоге: 1
20.11.2015, 18:25 16
в проекте CLR
Каким боком здесь вообще CLR? В асм еще напишите.
1
Заблокирован
21.11.2015, 14:30  [ТС] 17
Цитата Сообщение от Croessmah Посмотреть сообщение
Каким боком
наверное таким что конструкция for each (int x in a) поддерживается только им.

Добавлено через 25 минут
интересно. почему данная конструкция не вызывает ошибки в компиляции ?

C++
1
2
vector<int> :: reference s = v.front(); 
s = v.back();
все равно же s продолжает указывать на 1-й элемент.
0
Заблокирован
22.11.2015, 16:26  [ТС] 18
Добрый день !
Можно ли в список вставлять данные из вектора ? тип инт в обеих контейнерах.
0
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
22.11.2015, 17:00 19
Цитата Сообщение от RAFA91 Посмотреть сообщение
Можно ли в список вставлять данные из вектора ? тип инт в обеих контейнерах.
Можно.
0
Заблокирован
22.11.2015, 17:04  [ТС] 20
Цитата Сообщение от S_el Посмотреть сообщение
Можно.
а смысл ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2015, 17:04

Удаление элементов вектора через итератор
почему так: //работает vector&lt;int&gt;::iterator it=garage.begin(); while(it!=garage.end()) {...

Изменить значение элемента вектора, на который указывает итератор
Собственно вопрос, возможно ли изменить значение элемента вектора, на который указывает итератор,...

Как вывести элементы двумерного вектора через итератор?
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); using namespace std; ...

Реализовать двусвязный список (list), итератор (iterator) и константный итератор (сonst_iterator) для списка
не могу понять что должно быть результатом. может подскажете примеры? пожалуйста. Задание:...


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

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

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