Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Question on usage of functional object.

Reply
Thread Tools

Question on usage of functional object.

 
 
hn.ft.pris@gmail.com
Guest
Posts: n/a
 
      01-23-2007
I've got following code test C++'s functor. For the sake of
easy-reading, I omit some declearations.



#include <algorithm>
#include <functional>

using namespace std;

template <typename T> class Sum{
public:
Sum(T i=0):sum(i){};
inline void operator () (T x){
sum += x;
}
inline T output() const{
return sum;
}

private:
T sum;
};

int main( void ){


vector<int> vec(10, 1);

Sum<int> sum;

sum = for_each(vec.begin(), vec.end(), Sum<int>()); .......(1)
sum = for_each(vec.begin(), vec.end(), sum); .........(2)
sum = for_each(vec.begin(), vec.end(), sum.operator()(int) ); ...(3)

cout << sum.output() << endl;

return 1;
}

It's easy to understand that (2) works, because sum.operator()(int) is
called implicitly. (1) also works, it confuses me. Does Sum<int>()
create an implicit class Sum object? On the other hand, Sum<int>
doesn't work.
(3) fails, does it means the third argument of "for_each" couldn't be a
function pointer? What will the code be if I want to pass a function
pointer here? Thanks for help!

 
Reply With Quote
 
 
 
 
Kai-Uwe Bux
Guest
Posts: n/a
 
      01-23-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

> I've got following code test C++'s functor. For the sake of
> easy-reading, I omit some declearations.
>
>
>
> #include <algorithm>
> #include <functional>
>
> using namespace std;
>
> template <typename T> class Sum{
> public:
> Sum(T i=0):sum(i){};
> inline void operator () (T x){
> sum += x;
> }
> inline T output() const{
> return sum;
> }
>
> private:
> T sum;
> };
>
> int main( void ){
>
>
> vector<int> vec(10, 1);
>
> Sum<int> sum;
>
> sum = for_each(vec.begin(), vec.end(), Sum<int>()); .......(1)
> sum = for_each(vec.begin(), vec.end(), sum); .........(2)
> sum = for_each(vec.begin(), vec.end(), sum.operator()(int) ); ...(3)
>
> cout << sum.output() << endl;
>
> return 1;
> }
>
> It's easy to understand that (2) works, because sum.operator()(int) is
> called implicitly. (1) also works, it confuses me. Does Sum<int>()
> create an implicit class Sum object?


There is nothing implicit about the function object. Although: it is a
temporary.

> On the other hand, Sum<int> doesn't work.


Right: Sum<int> just denotes a type. It is not an expression that evaluates
to an object of that type.

> (3) fails, does it means the third argument of "for_each" couldn't be a
> function pointer?


No, it just means you got the syntax wrong.

> What will the code be if I want to pass a function pointer here?


Well, just pass a function pointer. Something like:

void inc_5 ( int & a ) { a+=5; }

....

for_each( vec.begin(), vec.end(), &inc_5 );

(warning, I just typed it into the newsreader, so there may be typos in the
code.)

Best

Kai-Uwe Bux
 
Reply With Quote
 
 
 
 
Tushar Saxena
Guest
Posts: n/a
 
      01-23-2007
Hello everyone,

I'd really appreciate it if anyone could describe some of the nuances
of declaring and using a dynamic 2D array on the heap.


Thanx
<tuShaRsAXEna>
 
Reply With Quote
 
=?iso-8859-1?q?Erik_Wikstr=F6m?=
Guest
Posts: n/a
 
      01-23-2007
On Jan 23, 1:25 pm, Tushar Saxena <(E-Mail Removed)> wrote:
> Hello everyone,


Hi, try to start a new topic next time and don't hijack an existing
one.

> I'd really appreciate it if anyone could describe some of the nuances
> of declaring and using a dynamic 2D array on the heap.


T* arr = new T[nr];

Replace T with the type you want an array of and nr with the number of
elements in the array.

arr[n]

Access element n of the array.

delete[] arr;

Delete the array when you are done with it.

Can't think of much more to say about it except that it might be better
to use std::vector<T> instead.

std::vector<T> arr = new std::vector<T>();
delete arr;

The rest is the same.

--
Erik Wikström

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
retrieving CPU Usage and Memory Usage information in JAVA hvt Java 0 03-13-2007 01:09 PM
retrieving CPU Usage and Memory Usage information in JAVA hvt Java 0 03-13-2007 01:07 PM
Question on usage of functional object. hn.ft.pris@gmail.com C++ 2 01-23-2007 03:49 PM
Webchecker Usage - a problem with local usage Colin J. Williams Python 1 02-26-2004 12:28 AM
Need help on memory usage VS PF usage metfan Java 2 10-21-2003 01:58 PM



Advertisments