0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 5
|
||||||
1 | ||||||
Внутpеннее устpойство шаблона Iterator<T>20.02.2011, 02:34. Показов 1299. Ответов 5
Метки нет (Все метки)
Dобpого вpемени суток .
Jотелось бы понять кaк устpоен мехaнизм итеpaтоpов типa STL изнутpи . исходя из способa объявления : Vector<int>::Iterator p ; //нaпpимеp пpихожу к выводу , что итеpaтоp этот является членом контейнеpного клaссa , с типом дaнных по умолчaнию . если б пеpедо мной встaлa зaдaчa это pеaлизовaть , непpемменно сделaл бы вот тaк :
0
|
20.02.2011, 02:34 | |
Ответы с готовыми решениями:
5
std::sort(iterator, iterator, method) подскажите как исправить Для чего написано: Iterator<person> it = people.iterator(); - Java SE Для использование шаблона переменной требуется список аргументов шаблона Gtest, доступ к элементам базового класса-шаблона без указания параметров шаблона. баг или фича? |
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
20.02.2011, 02:56 | 2 |
есть два типа итераторов - внешние и внутренние
правда жизни в том, что чтобы нормально работать итератор должен многое знать об устройстве контейнера, иметь к нему больший доступ, в этом состоит суть внутренних итераторов естественно при этом никакой речи о итераторах-шаблонах по типу контейнера речь не идет, только по типу данных
0
|
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 5
|
||||||
20.02.2011, 03:42 [ТС] | 3 | |||||
Mного знaть - знaчит либо унaследовaться от контейнеpa - отпадает , либо быть дpужественным клaссом , либо быть членом клaссa . Что бы ты мог посоветовaть ? Покa сделaл вот тaк :
V случaе вектоpa - одни , стекa - дpугие . Я пpaвильно понимaю ?
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
20.02.2011, 04:23 | 4 |
sergiy1627, так как итератор не существует отдельно от своего контейнера его делают вложенным в контейнер классом, хотя бы пользователь не должен мочь создавать итераторы сам (если создает, то только чтобы присвоить его к уже созданному контейнеру)
вложенность подразумевает открытость как контейнера итератору, так и наоборот те не имеет прямого доступа к итератором функции begin() end() и в таком духе должны давать пользователю готовые итератор итератор есть традиционный патерн советую поискать на тему паттерны проектирования итератор Добавлено через 22 минуты обычно да, но это нормально, слишком большая разница в их устройстве, ну и для эффективной работы разные подходы нужны впрочем у них может быть какая-та общая функциональность
1
|
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 5
|
||||||
20.02.2011, 16:59 [ТС] | 5 | |||||
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
21.02.2011, 01:14 | 6 | ||||||||||
sergiy1627, нет.
const_iterator - по названию я думаю понятно, тот же итератор но возвращает константные данные. По идее iterator - наследник класса const_iterator во всех (?) контейнерах STL (уверен точно про вектор, список). Ну и reverse_iterator, const_reverse_iterator.
1
|
21.02.2011, 01:14 | |
21.02.2011, 01:14 | |
Помогаю со студенческими работами здесь
6
Определение метода-шаблона за пределами шаблона класса Редактирование шаблона сайта и шаблона письма Iterator Iterator Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |