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

Помогите разобраться с итераторами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сортировка подсчетом http://www.cyberforum.ru/cpp-beginners/thread427075.html
Даны две последовательности. Получить упорядоченную по невозрастанию последовательность, состоящую из тех членов первой последовательности, которых нет во второй. Сортировка методом подсчета.
C++ Программирование LPT порта Привет! Так получилось, что приходится осваивать программирование. Начитался статей, написал программу, которая работает с LPT портом, с помощью Delphi. Теперь требуют перевести ее в C++Builder. Начал переводить. Компилируется... Но работает криво и не полностью. Помогите, пожалуйста. Проекты вложены. Работаю в ХР http://www.cyberforum.ru/cpp-beginners/thread427069.html
переделать программу из ввода с клавиатуры в ввод из файла C++
нужно сделать в программе чтоб ввод был из файла, а не с клавиатуры #include <iostream> #include <locale.h> #include <math.h> #include <fstream> using namespace std; struct marsh { char *begst;
Как инициализировать член раньше предка C++
Изредка, но может встретиться в жизни такая ситуация, когда надо инициализировать один из членов класса раньше предка. Обычно в том случае, если при инициализации предок ссылается на данные этого члена. Приведу пример:class Foundation { // Фундамент public: Foundation(float Width, float Height); // Выкопать яму нужных размеров и залить бетоном private: // Нельзя копировать и присваивать...
C++ Вычислить и вывести на экран в виде таблицы значения функции http://www.cyberforum.ru/cpp-beginners/thread427003.html
Не пойму гдето ошибка, не хочет считать по второй формуле помогите пожалуйста... условия: Вычислить и вывести на экран в виде таблицы значения функции F в интервале Xнач до Xкон c шагом dX. ax^2+bx+c при a<0 и c!=0 F= -a/x-c при a>0 и c=0 a(x+c) в остальных случаях где а,b,c - действительные числа Значения a, b ,c ,Xнач, Xкон, dX ввести с клавиатуры
C++ в каком направлении действовать при написании программы дано задание: "Проверить, является ли выражение, состоящее только из прописных букв заданной строки, палиндромом. Если да, то напечатать полученный палиндром. В противном случае вывести строку, состоящую из символов исходной строки с удаленными прописными символами." подскажите пожалуйста, с чего начать программу хоть что-нибудь подскажите, буду очень благодарна подробнее

Показать сообщение отдельно
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
13.01.2012, 00:17     Помогите разобраться с итераторами
как-то криво у вас это сделано. файнд ничего не возвращает. хотя мог бы возвращать итератор. и дальше уже в зависимости от ситуации, можно было бы результат печатать или еще что-то делать. вариант принта в файнде как сейчас - это хардкод и ничего хорошего из этого не будет. Это первое.

Второе. Как сделать так, чтобы поиск был легко настраиваемый? Так же как и в стл работает алгоритм std::find_if, который принимает диапазон поиска и предикат. т.е. файнд можно было бы переписать вот так:

C++
1
2
3
4
5
6
7
8
9
10
template <typename Pred>
const_iterator Find(const_iterator begin, const_iterator end, Pred predicate) const
{
   return std::find_if(begin, end, predicate);
}
 
const_iterator Find(Pred predicate) const // удобно, когда нужен поиск по всему диапазону
{
   return Find(begin(), end(), predicate);
}
Использование:
C++
1
2
3
4
5
ComputerModel<XXX> cm;
if (cm.Find(cm.begin(), cm.end(), SomePred) != cm.end())
{
  // do something
}
И третье. Не совсем понятно в чем польза от класса ComputerModel. Почему нельзя было просто использовать контейнеры и алгоритмы?

Добавлено через 38 минут
Четвертое
C++
1
2
3
4
5
for ( begin; begin!=end; begin++)
{
    if(/*а вот здесь как? не могу же я написать вот так потому что это итератор*/ *begin.ram == value)
        *begin.Print();
}
Очень даже можете. Итератор можете рассматривать как указатель. Через итератор можно получить доступ до объекта и до его публичных полей\методов.
C++
1
2
3
4
if (begin->ram == value)
{
   ...
}
Итератор можете рассматривать как указатель. Через итератор можно получить доступ до публичных полей\методов объекта, на который этот итератор ссылается.
 
Текущее время: 01:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru