#!/usr/bin/perl use strict; use warnings; use stl; print ">>>$0>>>>:\n"; my $v = list(element_type => 'MyElem', qw(first second third fourth fifth)); for_each($v->begin(), $v->end(), ptr_fun('::myprint')); print 'for_each($v->begin(), $v->end(), ptr_fun(\'uc\'));', "\n"; for_each($v->begin(), $v->end(), ptr_fun('uc')); for_each($v->begin(), $v->end(), ptr_fun('::myprint')); print 'for_each($v->begin(), $v->end(), "something");', "\n"; for_each($v->begin(), $v->end(), mem_fun('something')); print "Static Foreach with unary-function-object:\n"; for_each($v->begin(), $v->end(), ptr_fun('::myprint')); my $v2 = list(element_type => 'MyElem', qw(red blue green yellow white)); my $t1 = tree($v); my $t2 = tree($v2); my $tree = tree(); print "\$tree->size()=", $tree->size(), "\n"; $tree->push_back($tree->factory($t1)); $tree->push_back($tree->factory($t2)); print "Tree Foreach:\n"; for_each($tree->begin(), $tree->end(), ptr_fun('::myprint')); print "Tree Find_If 'yellow':", find_if($tree->begin(), $tree->end(), bind1st(equal_to(), 'yellow')) ? '...Found' : '...Not found!', "\n"; print "Tree Count_If(/e/i):", count_if($tree->begin(), $tree->end(), bind2nd(matches_ic(), 'e')), "\n"; print "Tree Remove_If(/l/i):\n"; remove_if($tree->begin(), $tree->end(), bind2nd(matches_ic(), 'l')); for_each($tree->begin(), $tree->end(), ptr_fun('::myprint')); print "Tree Find_If 'yellow':", find_if($tree->begin(), $tree->end(), bind1st(equal_to(), 'yellow')) ? '...Found' : '...Not found!', "\n"; sub myprint { print "Data:", @_, "\n"; } # ---------------------------------------------------------------------------------------------------- { package MyElem; use base qw(Class::STL::Element); sub something { my $self = shift; print "Something:", $self->data(), "\n"; } } # ----------------------------------------------------------------------------------------------------