2 / 2 / 0
Регистрация: 16.08.2020
Сообщений: 25

Итераторы стандартных контейнеров

29.09.2020, 14:38. Показов 2481. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, я изучаю С++ и не могу понять одной вещи.

Итератор - это указатель на объект контейнера?
Почему я могу написать код вида
C++
1
2
3
template<class T>
vector<T> vec; 
auto ptr= vec.begin();
но не могу написать
C++
1
2
3
template<class T>
vector<T> vec; 
T* ptr= vec.begin();
и тем более, передать значение переменной ptr в написанную мной функцию, которая принимает в качестве аргумента указатели.
Получается, итератор - это отдельный тип данных? Но я нигде не могу найти информации, подтверждающей это.

1) Как мне объявить функцию, которая могла бы принимать в качестве аргументов итераторы стандартных контейнеров?
2) Можно ли написать функцию, принимающую аргументами указатели и итераторы и не писать её в двух вариантах?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2020, 14:38
Ответы с готовыми решениями:

Исключения в конструкторах стандартных контейнеров
Очень тупой вопрос: могут ли перемещающие конструкторы std::map и std::vector выкинуть исключение? С одной стороны, ну чему там кидать...

C++: итераторы по умолчанию, пустые итераторы, end()
Всем добра! Вопрос на тему итераторов в плюсах: 1. какие значения имеют итераторы без инициализации например,...

Итераторы и обратные итераторы
У вектора есть два типа итераторов, обычные и обратные итераторы произвольного доступа... Обычные реализовал, осталось обратные. Решил...

25
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
29.09.2020, 20:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это для того, чтобы показать неправильность подхода к изучению.
Я не компетентен, объясните в чем проблема использования высокоуровневых концепций до изучения низкоуровневых.
Тот же python хранит под капотом итераторы и контейнеры и подразумевает их использование буквально с первого дня знакомства с языком.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
29.09.2020, 20:44
Да явно не с первого для.

Добавлено через 39 секунд
Цитата Сообщение от Vladimir. Посмотреть сообщение
объясните в чем проблема использования высокоуровневых концепций до изучения низкоуровневых.
Проблема в что тратится обычно больше времени и сил.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.09.2020, 21:06
Цитата Сообщение от Vladimir. Посмотреть сообщение
Я не компетентен, объясните в чем проблема использования высокоуровневых концепций до изучения низкоуровневых.
Проблема в том, что снизу вверх построена логика. И учить её в противоположном порядке это как кота за хвост в холожную воду тащить. Тут любой понимает, что о разнице последовательного, дву/однонаправленного, произвольного и пр. видов доступа можно написать неплохую статью. Но вопрос даже не в этом. Да и не в том, что приведение типов - базовая тема в понимании типов. Вопрос в том, что
Цитата Сообщение от Avazart Посмотреть сообщение
явно не с первого дня.
то есть, в порядке, который диктуется изложением в нормальной литературе. А не в том, что измышляется как диктуемое "материалом" или "могучим ураганом" или как то еще, кроме здравого смысла. А смысл видится и в готовности падать ниц
Цитата Сообщение от markmarks Посмотреть сообщение
и пал ниц)
или швырять какашки в виде обращения на ты и пожеланий здоровья, когда это не разрешалось уровнем отношений. Тут всё закономерно.
Vladimir., я задал немного вопросов на форуме, но начинать с фразы:
Цитата Сообщение от markmarks Посмотреть сообщение
не могу понять одной вещи.
не приходило в голову. Это мелочь, казалось бы. Но прочтите тему и увидите. Это могла быть случайность, но оказалась - закономерность.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
29.09.2020, 21:32
По теме итераторов, функция std::advance справится с обычними указателями ?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
29.09.2020, 21:40
SmallEvil, естественно. Как и функция next, и функция distance.
Указатель - это частный случай итератора. А итератор в первую очередь это не какой-то класс, а паттерн, концепция.
0
76 / 68 / 10
Регистрация: 11.07.2016
Сообщений: 320
29.09.2020, 21:43
Цитата Сообщение от markmarks Посмотреть сообщение
Но я нигде не могу найти информации, подтверждающей это.
Уверен, в любой современной функциональной IDE можно выполнить действие вроде "пкм->перейти к объявлению/определению".

Цитата Сообщение от markmarks Посмотреть сообщение
Я хочу написать функцию, которая может принять указатели на начало и конец массива, а может принять итераторы beginend вектора и что-то сделать с этими контейнерами независимо от того, что это за контейнер.
Коль уж в заголовке сказано про стандартные контейнеры, то предложу просто воспользоваться std::transform. На cppreference можно посмотреть пример возможной имплементации.

Цитата Сообщение от markmarks Посмотреть сообщение
2) Можно ли написать функцию, принимающую аргументами указатели и итераторы и не писать её в двух вариантах?
Для всех мыслимых и немыслимых видов контейнеров - нет, нельзя. Ну, точнее можно конечно, но, по сути, это будет n функций в одной с выбором поведения в зависимости от типа параметра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2020, 21:43

Сколькими способами можно отобрать 6 деталей из ящика, 7 стандартных и 3 не стандартных?
Помогите пожалуйста разораться с задачей по комбинаторике, спасибо заранее:)

Использование контейнеров
Возник вопрос может кто-то сталкивался. Как использовать контейнеры чтоб увеличивать размер массива *v при надобности на единицу. И...

Шаблон контейнеров
Есть MyStream класс потока Есть запись в поток простых классов. Как организовать запись в поток из любых контейнеров? Ведь все...

обход контейнеров
Всем привет. Можно ли как-нибудь написать цикл фор под два контейнера для полученя доступа к Data ? class Data { public: int...

Пересечение контейнеров
Пытаюсь пересечь контейнеры(чтобы не было повторяющихся элементов),но выдает vector iterators incompatible ,если перед итераторами ничего...


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

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

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru