Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Состояние функтора 
V
    Опции темы
IKM2007
Дата 1.8.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Читаю Николая Джосьютиса "Стандартная библиотека C++". Дошел до главы 8, "Обьекты функции STL". Здесь перечисляет преимущества функтора перед обыкновенной функцией:
Цитата

Обьект функции обладает состоянием. 

То есть состоянием? Что такое состояние функтора?
Если можно примером.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
mes
Дата 1.8.2009, 22:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(IKM2007 @  1.8.2009,  20:55 Найти цитируемый пост)
Что такое состояние функтора?

некоторое значение сохраненное между вычислениями, от которого зависит поведение функтора.




--------------------
PM MAIL WWW   Вверх
IKM2007
Дата 1.8.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Цитирую:
Цитата

Обьект функции ведет себя более разумно, потому что может обладать состоянием. Например можно создать два экземпляра одной функции, представленной обьектом функции, которые могут обладать разными состояниями. Для обичных функции это невозможно.

Если не трудно приведи пример этого.
Насколько я понимаю:
Функция различется от функтора тем, что функтор одновременно и обьект и функция, обладающая статической переменной. Это так?


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
mes
Дата 1.8.2009, 22:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(IKM2007 @  1.8.2009,  21:09 Найти цитируемый пост)
что функтор одновременно и обьект и функция, обладающая статической переменной. Это так? 

а причем тут слово "статической" ?

функтор это объект,  который имитирует поведение функции. т.е фактически это такой объект к которому можно применить оператор ().


Цитата(IKM2007 @  1.8.2009,  21:09 Найти цитируемый пост)
Например можно создать два экземпляра одной функции, представленной обьектом функции, которые могут обладать разными состояниями. Для обичных функции это невозможно.

Код

struct summator {
    int result;
    summator (int init = 0) : result(init) {}
    summator& operator () (int i) { result +=i; return *this; }
};


int main(void)
{
    summator summ1, summ2;

    summ1(5)(4)(3)(2)(1); //1
    summ2(3)(2)(1);       //2

    std::cout << summator(6)(5)(4)(3)(2)(1).result<< std::endl; //3
    std::cout << summ1(100).result<< std::endl;
    std::cout << summ2.result<< std::endl;

    return 0;
}

в данном примере состояние функтора выражается переменной result.

каждый из функторов хранит результат  и позволяет в любой момент времени его изменить .

Это сообщение отредактировал(а) mes - 1.8.2009, 22:19


--------------------
PM MAIL WWW   Вверх
andrew_121
Дата 1.8.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



IKM2007, http://forum.try-catch.ru/index.php?topic=42.msg149#msg149
Второй и третий пример кода.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
IKM2007
Дата 1.8.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



mes, Большое спасибо! Уже понятно. smile 


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
zim22
Дата 2.8.2009, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(IKM2007 @  1.8.2009,  22:09 Найти цитируемый пост)
Цитирую:

вы по памяти цитировали? smile
Цитата(IKM2007 @  1.8.2009,  22:09 Найти цитируемый пост)
можно создать два экземпляра одной функции, представленной обьектом функции, которые могут одновременно обладать разными состояниями

***
и для галочки: у вас типографская версия книги? или электронный вариант.

Это сообщение отредактировал(а) zim22 - 2.8.2009, 08:32


--------------------
PM MAIL   Вверх
IKM2007
Дата 2.8.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Цитата(zim22 @  2.8.2009,  08:30 Найти цитируемый пост)
вы по памяти цитировали?


Цитата(zim22 @  2.8.2009,  08:30 Найти цитируемый пост)
и для галочки: у вас типографская версия книги? или электронный вариант.

электронный вариант. А что?


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
zim22
Дата 2.8.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



 smile 
Цитата(IKM2007 @  2.8.2009,  09:14 Найти цитируемый пост)
электронный вариант. А что?

я её в бумажном виде ищу.


--------------------
PM MAIL   Вверх
IKM2007
Дата 2.8.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



zim22, Я тоже надумываю купить книгу, а что не продают в магазинах?



--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
zim22
Дата 2.8.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



 smile 
Цитата(IKM2007 @  2.8.2009,  18:24 Найти цитируемый пост)
 Я тоже надумываю купить книгу, а что не продают в магазинах?

неа


--------------------
PM MAIL   Вверх
GoldFinch
Дата 2.8.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



а что, хорошая книга?
PM MAIL ICQ   Вверх
IKM2007
Дата 2.8.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


Профиль
Группа: Участник
Сообщений: 702
Регистрация: 26.4.2008
Где: olmedreca

Репутация: нет
Всего: 40



Для STL очень хорошая, Все функции подробно разобраны.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
GoldFinch
Дата 4.8.2009, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



так и в стандарте вроде все разобрано

вообще, алгоритмы STL неудобно использовать
мало того что отдельный функтор писать надо, так он еще копируется, и его состояние после выполнения алгоритма так просто не получить %)


Это сообщение отредактировал(а) GoldFinch - 4.8.2009, 01:24
PM MAIL ICQ   Вверх
W4FhLF
Дата 4.8.2009, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 20
Всего: 121



GoldFinch, передавай по ссылке переменную состояния или делай её статической.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4099 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.