Так вот, появился вопрос, можно ли всё это сделать стандартными средствами (STL, boost), т.е. без собственного предиката. Что-то мне кажется, что я в очередной раз изобретаю велосипед.
Здравствуйте, МиГо, Вы писали:
МГ>Может проще пройтись по элементам вектора, и для каждого МГ>запустить его функцию?
Конечно можно. Но тут дело немножко в другом. В случае с find_if код получается более читабельным. Когда я пишу find или find_if, то сразу видно, что я делаю именно поиск. Хотя это дело вкуса.
Здравствуйте, ArtDenis, Вы писали:
AD>Так вот, появился вопрос, можно ли всё это сделать стандартными средствами (STL, boost), т.е. без собственного предиката. Что-то мне кажется, что я в очередной раз изобретаю велосипед.
Элементарно с помощью boost::lambda.
Что-то типа (прошу не пинать — пишу без копилятора):
Спасибо, MaximE. то то что нужно! Единственная проблема в том, что у меня компилятор спотыкается на частичной специализации шаблонов из файла библиотеки boost::lambda
Поэтому сразу вопрос, а кому-нибудь удалось прикрутить boost::lambda на C++Builder4? И как дела обстоят с Builder'ами следующих версий?
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, dkon, Вы писали:
D>>если описать TGraphLine::CheckRectHit вот так:
D>>
D>>bool CheckRectHit(TPoint cur) const;
D>>
AD>К сожалению, такой подход снижает производительность из-за копирования объекта.
TPoint не настолько большая структура, чтобы стоило об этом беспокоиться.
в общем случае, конечно, лучше передавать ссылку, но для этого придется поискать реализацию стл, которая не объявляет при этом ссылку на ссылку в bind2nd.
Здравствуйте, ArtDenis, Вы писали:
AD>Спасибо, MaximE. то то что нужно! Единственная проблема в том, что у меня компилятор спотыкается на частичной специализации шаблонов из файла библиотеки boost::lambda
А если просто boost::bind без lambda?
Здравствуйте, WolfHound, Вы писали:
WH>А если просто boost::bind без lambda?
Можно и просто. Но для того чтобы, например, инвертировать результат функтора boost::bind его придется заворачивать в std::not<>, а lambda просто написать !boost::lambda::bind(...).
Здравствуйте, WolfHound, Вы писали: AD>>Спасибо, MaximE. то то что нужно! Единственная проблема в том, что у меня компилятор спотыкается на частичной специализации шаблонов из файла библиотеки boost::lambda WH>А если просто boost::bind без lambda? WH>...
ОК, работает.
Здравствуйте, ArtDenis, Вы писали:
A> Кстати, подстановки типа _1, _2 ... впервые появились в boost, или A> кто-то раньше догадался использовать такие вещи?
Можно посмотреть документацию в boost. До того, как boost.lambda вошла в boost,
она называлась как-то по-другому и жила самостоятельной жизнью. Кроме того,
если я не ошибаюсь, существовало несколько альтернативных библиотек
с аналогичной функциональностью.
Posted via RSDN NNTP Server 1.5 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен