954,483 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

STL question concerning partial_sum?

Hello ladies and gents,

I'm reading about the algorithm partial_sum and there are two different versions of this.

The first one just calculates cumulative numbers like this:

#include <iostream>
#include <numeric>
#include <vector>

using namespace std;

int main()
{
	int a[4] = {10, 20, 30, 40}, b[4];

	partial_sum(a, a+4, b);

	copy(b, b+4, ostream_iterator<int>(cout, " "));
	cout<<endl;

	cout<<"Press any key to continue!\n";
	cin.get();

	return 0;
}


The second one can be used for other algorithmetic reasons, like multiplying for example:

#include <iostream>
#include <numeric>
#include <list>

using namespace std;

int main()
{
	long a[4] = {10, 20, 30, 40}, b[4];

	partial_sum(a, a+4, b, multiplies<long>());

	copy(b, b+4, ostream_iterator<long>(cout, " "));
	cout<<endl;

	cout<<"Press any key to continue!\n";
	cin.get();

	return 0;
}


The questions I have though are:

1) I can't seem to be able to use the second version with #include , why is that?
2) How can I know wich header file is exactly needed for this?

JoBe
Posting Pro in Training
420 posts since Sep 2004
Reputation Points: 51
Solved Threads: 4
 

why not?

#include<vector>
#include<iostream>
#include<numeric>
using namespace std;
int main()
{
   vector<int> vec;
   for( int i = 0;i<10;++i)
      vec.push_back(i);
   partial_sum(vec.begin(),vec.end(),ostream_iterator<int>(cout," "));
   cout<<endl;
   partial_sum(vec.begin(),vec.end(),ostream_iterator<int>(cout," "),multiplies<int>());
   return 0;
}
Stoned_coder
Junior Poster
164 posts since Jul 2005
Reputation Points: 19
Solved Threads: 5
 

Thanks for your example Stoned_coder, but that wasn't really my question ;)

What I want to know is wich is the correct header file for using partial_sum, or , but, I think Ive got it since I'm able to use for both versions and not :!:

JoBe
Posting Pro in Training
420 posts since Sep 2004
Reputation Points: 51
Solved Threads: 4
 

partial_sum is in

Stoned_coder
Junior Poster
164 posts since Jul 2005
Reputation Points: 19
Solved Threads: 5
 

That's exactly what was written in my book, the only thing is, if I use

partial_sum(a, a+4, b, multiplies<long>());


without , it doesn't work :confused:

I get two errors:Compiling...
main.cpp
C:\Program Files\Microsoft Visual Studio\MyProjects\LAVbBoek\main.cpp(13) : error C2065: 'multiplies' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\LAVbBoek\main.cpp(13) : error C2062: type 'long' unexpected
Error executing cl.exe.

main.obj - 2 error(s), 0 warning(s)

JoBe
Posting Pro in Training
420 posts since Sep 2004
Reputation Points: 51
Solved Threads: 4
 

oops yeah i forgot that header too in my example. multiplies is in .

Stoned_coder
Junior Poster
164 posts since Jul 2005
Reputation Points: 19
Solved Threads: 5
 

Ah, ok thanks, that worked :) Strange that it isn't mentioned in the book though, they only talk about :rolleyes:

Does the example work because contains :?:

JoBe
Posting Pro in Training
420 posts since Sep 2004
Reputation Points: 51
Solved Threads: 4
 

i expect so

Stoned_coder
Junior Poster
164 posts since Jul 2005
Reputation Points: 19
Solved Threads: 5
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You