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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Где можно раздобыть иходники каково-нибуть движка? http://www.cyberforum.ru/cpp-beginners/thread337157.html
Недавно посетила идея присоиденения не хватающих составляющих к движку OGRE , но я даже не знаю с чего начать думаю разобраться в исходниках каково-нибудь движка и там уже по примеру.ПЛИЗ ПОДСКАЖИТЕ ГДЕ ВЗЯТЬ ИХОДХОДНИКИ любова движка(хоть DOOM) З.Ы.в гугл не отпровлять я только из него пришол)
C++ Поиск в глубину Объясните плз поиск в глубину с примером. Сам много реалихаций нашел, но до конца не могу разобраться, может у кого есть примерчик хороший. В общем киньте плз пример с детальным описанием. И желательно алгоритм с массивами а не с vector-ми. http://www.cyberforum.ru/cpp-beginners/thread337109.html
C++ <> в С++
Прошу прощения за нубский вопрос. Как в С++ выглядит логическая операция из Pascal <>?
Как работает "шаг цикла" в цикле for? C++
Всем привет! Я в с++ новичек !! кому не сложно обьясните как работает "шаг цикла" в цикле for For(счетчик = значение; счетчик < значение; шаг цикла) я понял что это значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом повторении цикла.. но прост не очень понятна запись i++... пример ..... for(i=1;i<=10;i++) { sum=sum+i;
C++ дружественные функции http://www.cyberforum.ru/cpp-beginners/thread337046.html
Всем привет!!! Есть код: #include<iostream.h> #include<conio.h> #include<string.h> enum Shape{prizm,parallelepiped,cube,pyramid,cone,cylinder}; static char* Shapes={"prizm","parallelepiped","cube","pyramid","cone","cylinder"};
C++ Как заставить машину ждать перед очередным выполнением цикла? есть код#include <stdio.h> #include <iostream> #include <conio.h> using namespace std; int main(int argc, char *argv) { int x = 9; while(x != 0){ x = x-1; подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
29.07.2011, 14:44     Иттераторы
Цитата Сообщение от taras atavin Посмотреть сообщение
Нецикловую реализацию функции find в студию.
Использовать итераторы вне циклов не запрещено. То есть вполне реально развернуть цикл с теми же итераторами.
C++
1
2
iterator it = container.begin();
cout << *it << cout *(it + 1) ... << cout *(it + n);
Здесь цикла нет, смысл то не в переборе элементов от начала до конца, а в доступе к элементам. То есть, представим себе любой контейнер:
C++
1
2
3
4
5
6
7
class ContainerItem {
     T data;
};
 
class Container {
      ContainerItem *items;
};
В любом случае, чтобы получить доступ к элементам, необходимо раскрыть как приватный член items, так и приватный член data. Чтобы этого не делать можно создать какой-либо оператор доступа. Это может быть operator[] или метод at, не так важно, либо можно создать итератор. По сути в этом и есть основная идея итератора, в сокрытии данных.
Однако, подобный подход (с методами доступа) менее гибкий, чем итераторы. То есть здесь нет никакого правила обхода контейнера, а итераторов может быть сколь угодно много и у каждого есть свое правило обхода. Например, последовательный обход или обход через одного, только элементы с четными или нечетными индексами, элементы, которые больше нуля или меньше нуля, много всяких-разных И чтобы получить еще одну модель обхода, программисту достаточно создать еще один итератор, и просто применить его в цикле. А не придумывать каждый раз мудреный цикл.
Но опять же с любым итератором я могу обойтись и без циклов.
Допустим, если итератор проходится по отрицательным числам в контейнере, тогда
C++
1
iterator it = container.begin()
будет "указывать" на первый отрицательный, и далее,
C++
1
iterator it2 = it + 1;
будет "указывать" на второй отрицательный. И этот второй отрицательный может иметь пятнадцатый индекс во всем контейнере.
 
Текущее время: 04:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru