1 <?xml version=
"1.0" encoding=
"UTF-8" standalone=
"no"?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml"><head><title>Generalized Operations
</title><meta name=
"generator" content=
"DocBook XSL-NS Stylesheets V1.76.1"/><meta name=
"keywords" content=
" ISO C++ , library "/><meta name=
"keywords" content=
" ISO C++ , runtime , library "/><link rel=
"home" href=
"../index.html" title=
"The GNU C++ Library"/><link rel=
"up" href=
"numerics.html" title=
"Chapter 12. Numerics"/><link rel=
"prev" href=
"numerics.html" title=
"Chapter 12. Numerics"/><link rel=
"next" href=
"numerics_and_c.html" title=
"Interacting with C"/></head><body><div class=
"navheader"><table width=
"100%" summary=
"Navigation header"><tr><th colspan=
"3" align=
"center">Generalized Operations
</th></tr><tr><td align=
"left"><a accesskey=
"p" href=
"numerics.html">Prev
</a> </td><th width=
"60%" align=
"center">Chapter
12.
6 </th><td align=
"right"> <a accesskey=
"n" href=
"numerics_and_c.html">Next
</a></td></tr></table><hr/></div><div class=
"section" title=
"Generalized Operations"><div class=
"titlepage"><div><div><h2 class=
"title"><a id=
"std.numerics.generalized_ops"/>Generalized Operations
</h2></div></div></div><p>
7 </p><p>There are four generalized functions in the
<numeric
> header
8 that follow the same conventions as those in
<algorithm
>. Each
9 of them is overloaded: one signature for common default operations,
10 and a second for fully general operations. Their names are
11 self-explanatory to anyone who works with numerics on a regular basis:
12 </p><div class=
"itemizedlist"><ul class=
"itemizedlist"><li class=
"listitem"><p><code class=
"code">accumulate
</code></p></li><li class=
"listitem"><p><code class=
"code">inner_product
</code></p></li><li class=
"listitem"><p><code class=
"code">chapterial_sum
</code></p></li><li class=
"listitem"><p><code class=
"code">adjacent_difference
</code></p></li></ul></div><p>Here is a simple example of the two forms of
<code class=
"code">accumulate
</code>.
13 </p><pre class=
"programlisting">
15 int someval = somefunction();
17 // ...initialize members of ar to something...
19 int sum = std::accumulate(ar,ar+
50,
0);
20 int sum_stuff = std::accumulate(ar,ar+
50,someval);
21 int product = std::accumulate(ar,ar+
50,
1,std::multiplies
<int
>());
22 </pre><p>The first call adds all the members of the array, using zero as an
23 initial value for
<code class=
"code">sum
</code>. The second does the same, but uses
24 <code class=
"code">someval
</code> as the starting value (thus,
<code class=
"code">sum_stuff == sum +
25 someval
</code>). The final call uses the second of the two signatures,
26 and multiplies all the members of the array; here we must obviously
27 use
1 as a starting value instead of
0.
28 </p><p>The other three functions have similar dual-signature forms.
29 </p></div><div class=
"navfooter"><hr/><table width=
"100%" summary=
"Navigation footer"><tr><td align=
"left"><a accesskey=
"p" href=
"numerics.html">Prev
</a> </td><td align=
"center"><a accesskey=
"u" href=
"numerics.html">Up
</a></td><td align=
"right"> <a accesskey=
"n" href=
"numerics_and_c.html">Next
</a></td></tr><tr><td align=
"left" valign=
"top">Chapter
12.
32 </td><td align=
"center"><a accesskey=
"h" href=
"../index.html">Home
</a></td><td align=
"right" valign=
"top"> Interacting with C
</td></tr></table></div></body></html>