Форум программистов, компьютерный форум CyberForum.ru

Итератор ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В идентификаторе минимальной длины определить количество букв http://www.cyberforum.ru/cpp-beginners/thread342496.html
Вообщем это пример который дали в методичке по с++ но он нифига не работает, сам я фигово пока понимаю в С++ только начинаю его изучать я заочник, люди можите исправить его чтоб работал этот пример, просто хочется по шаблону рабочему более менее подъучить азы, а потом уже глубже изучать мне так всегда проще было, заранее спасибо. а компилирую и запускаю в компиляторе с++ трубо . // Задана...
C++ fstream с++ Помогите пожалуйста... Как при считывании из файла считать переменные если они в файле находяться на разных строчках например надо считать a,b а они в файле записаны так: 1 2 переделайте пожалуйста эту программу чтобы она считывала не с одной строчки а с двух... http://www.cyberforum.ru/cpp-beginners/thread342494.html
Алгоритм Дейкстры C++
Всем доброго времени суток! Решал я задачу на ацмп про алгоритм Дейкстры. http://********/?main=task&id_task=132 Но зараза заваливается на 8 тесте. Не могли бы вы сказать в чем дело? #include <fstream> #include <algorithm> #include <vector> #include <iostream> int main() { //********************************************************************** int...
VS 6.0 C++
Подскажите пожалуйста, как добавлять dll-ки и папки с хидерами (.h) в Visual Studio 6.0? :-[
C++ Выравнивание текста http://www.cyberforum.ru/cpp-beginners/thread342466.html
Как мне выравнить текст в этом коде, как показано на рисунке ? cout<<"Едем ................................................"<<endl<<endl; cout<<"Лифт №1"; if(lif==chen) cout<<"(Вы)"; cout<<" "; cout<<"Лифт №2"; if(lif==chen) cout<<"(Вы)";
C++ Юникод в Си++ Здравствуйте. int main(int argc, char *argv) { wstring s1 = L"abracadabra"; cout << s1.size() << endl; // 11 wstring s2 = L"абракадабра"; cout << s2.size() << endl; // 22 подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
17.08.2011, 21:08     Итератор ?
Цитата Сообщение от Deviaphan Посмотреть сообщение
Где во фразе "Обобщённый контейнер" есть слово "вектор"? Список, набор, словарь также являются контейнерами и поддерживают итератор. Что в них общего с указателями, кроме оператора разыменования?
Даже для вектора итераторы не всегда могут быть простыми указателями, т.к. итераторы обратного обхода (reverse iterator) нельзя просто заменить указателем.
Т.е. взаимозаменяемы исключительно (forward)итератор и указатель. Всё! Но это лишь малое подмножество всех возможных итераторов.


Ничего подобного. Работа со словарём через итераторы не имеет ничего общего с работой со словарём через указатели.

Итераторы предназначены для единообразного обхода любых контейнеров, поддерживающих итераторы. Что, потенциально, даёт возможность взаимозаменяемости контейнеров, но в первую очередь служит для снижения сложности.
А по вашемму вектор не относится к обобщенным контейнерам?! И где вы в стандарте нашли для вектора какие-то исключения для реализации его итератора?!

Что общего у итераторв с указателями? Да, практически, все! То есть если вы возьмете итератор произвольного доступа, то вы не найдете никаких отличий! В этом и состоит смысл введения итераторов! Естественно, что некоторые контейнеры накладывают ограничения на возможности итераторов. Но это не меняет суть вопроса!

И вы глубоко заблуждаетесь, что для вектора, у которого итератором может служить простой указатель, нельзя делать обратный обход!?! И даже для итератора вектора, который не является обычным указателем, можно делать обратный обход!

ВЫ просто демонстрируете свое полное незнание стандартного класса вектор! Итератор класса вектор является [I]итератором произвольного доступа, как и у обычных массивов[/I] А это значит вы можете применять любую операцию, которая является корректной для указателей. То есать вы можете не только делать операцию инкримента, но и операцию декримента для обратного обхода! Более того, если бы вы внимательно посмотрели эту тему, то увидели, что здесь используются в примерах выражения вида v.begin() + 4, а это означает, что вы также можете и вычитать из итератора вектора, а, значит, и делать обратный обход!
 
Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru