A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FFunction%2FFunction_Template</id>
		<title>C++/Function/Function Template - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FFunction%2FFunction_Template"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Function/Function_Template&amp;action=history"/>
		<updated>2026-04-18T06:37:26Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/Function/Function_Template&amp;diff=1587&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Function/Function_Template&amp;diff=1587&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/Function/Function_Template&amp;diff=1588&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Function/Function_Template&amp;diff=1588&amp;oldid=prev"/>
				<updated>2010-05-25T10:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==A generic mode finding function.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;class X&amp;gt; X mode(X *data, int size)&lt;br /&gt;
{&lt;br /&gt;
  register int t, w;&lt;br /&gt;
  X md, oldmd;&lt;br /&gt;
  int count, oldcount;&lt;br /&gt;
  oldmd = 0;&lt;br /&gt;
  oldcount = 0;&lt;br /&gt;
  for(t=0; t&amp;lt;size; t++) {&lt;br /&gt;
    md = data[t];&lt;br /&gt;
    count = 1;&lt;br /&gt;
    for(w = t+1; w &amp;lt; size; w++) &lt;br /&gt;
      if(md==data[w]) count++;&lt;br /&gt;
    if(count &amp;gt; oldcount) {&lt;br /&gt;
      oldmd = md;&lt;br /&gt;
      oldcount = count;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  return oldmd;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int i[] = { 1, 2, 3, 4, 2, 3, 2, 2, 1, 5};&lt;br /&gt;
  char *p = &amp;quot;this is a test&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;mode of i: &amp;quot; &amp;lt;&amp;lt; mode(i, 10) &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;mode of p: &amp;quot; &amp;lt;&amp;lt; mode(p, (int) strlen(p));&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating a custom algorithm based on template==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;list&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template&amp;lt;class ForIter&amp;gt;&lt;br /&gt;
  void times2(ForIter start, ForIter end)&lt;br /&gt;
{&lt;br /&gt;
  while(start != end) {&lt;br /&gt;
    *start *= 2;&lt;br /&gt;
    start++;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  vector&amp;lt;int&amp;gt; vectorObject;&lt;br /&gt;
  for(i = 0; i &amp;lt;10; i++) &lt;br /&gt;
     vectorObject.push_back(i);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Initial Contents of vectorObject: &amp;quot;;&lt;br /&gt;
  for(i = 0; i &amp;lt;vectorObject.size(); i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; vectorObject[ i ] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  times2(vectorObject.begin(), vectorObject.end());&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Contents of vectorObject doubled: &amp;quot;;&lt;br /&gt;
  for(i = 0; i &amp;lt;vectorObject.size(); i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; vectorObject[ i ] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  list&amp;lt;float&amp;gt; lst;&lt;br /&gt;
  list&amp;lt;float&amp;gt;::iterator p;&lt;br /&gt;
  for(i = 0; i &amp;lt;5; i++) &lt;br /&gt;
     lst.push_back((float)i*3.1416);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Initial Contents of lst: &amp;quot;;&lt;br /&gt;
  for(p=lst.begin(); p!=lst.end(); p++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; *p &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  times2(lst.begin(), lst.end());&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Contents of lst doubled: &amp;quot;;&lt;br /&gt;
  for(p=lst.begin(); p!=lst.end(); p++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; *p &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==find all template function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;functional&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;typename InputIterator, typename Predicate&amp;gt;&lt;br /&gt;
vector&amp;lt;InputIterator&amp;gt; find_all(InputIterator first, InputIterator last, Predicate pred)&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;InputIterator&amp;gt; res;&lt;br /&gt;
  while (true) {&lt;br /&gt;
    first = find_if(first, last, pred);&lt;br /&gt;
    if (first == last) {&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    res.push_back(first);&lt;br /&gt;
    ++first;&lt;br /&gt;
  }&lt;br /&gt;
  return (res);&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv){&lt;br /&gt;
  int arr[] = {3, 4, 5, 4, 5, 6, 5, 8};&lt;br /&gt;
  vector&amp;lt;int*&amp;gt; all = find_all(arr, arr + 8, bind2nd(equal_to&amp;lt;int&amp;gt;(), 5)); &lt;br /&gt;
  &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Found &amp;quot; &amp;lt;&amp;lt; all.size() &amp;lt;&amp;lt; &amp;quot; matching elements: &amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  for (vector&amp;lt;int*&amp;gt;::iterator it = all.begin(); it != all.end(); ++it) {&lt;br /&gt;
    cout &amp;lt;&amp;lt; **it &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==function template for getting the max value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
T GetMax (T a, T b) {&lt;br /&gt;
  return (a&amp;gt;b?a:b);&lt;br /&gt;
}&lt;br /&gt;
int main () {&lt;br /&gt;
  int i=5, j=6, k;&lt;br /&gt;
  long l=10, m=5, n;&lt;br /&gt;
  k=GetMax(i,j);&lt;br /&gt;
  n=GetMax(l,m);&lt;br /&gt;
  cout &amp;lt;&amp;lt; k &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function template: swap values==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class X&amp;gt; void swapargs(X &amp;amp;a, X &amp;amp;b)&lt;br /&gt;
{&lt;br /&gt;
  X temp;&lt;br /&gt;
  temp = a;&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = temp;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int i=10, j=20;&lt;br /&gt;
  float x=10.1, y=23.3;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;&lt;br /&gt;
  swapargs(i, j); // swap integers&lt;br /&gt;
  swapargs(x, y); // swap floats&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Making a Sequence of Random Numbers==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;functional&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
void print(T&amp;amp; c){&lt;br /&gt;
   for( typename T::iterator i = c.begin(); i != c.end(); i++ ){&lt;br /&gt;
      std::cout &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
int main( )&lt;br /&gt;
{&lt;br /&gt;
   vector&amp;lt;int&amp;gt; random( 8 );&lt;br /&gt;
   // fill the container with random numbers&lt;br /&gt;
   generate( random.begin(), random.end(), rand );&lt;br /&gt;
   print( random );&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overriding a template function.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
template &amp;lt;class X&amp;gt; void swapargs(X &amp;amp;a, X &amp;amp;b)&lt;br /&gt;
{&lt;br /&gt;
  X temp;&lt;br /&gt;
   &lt;br /&gt;
  temp = a;&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = temp;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Inside template swapargs.\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
// This overrides the generic version of swapargs() for ints.&lt;br /&gt;
void swapargs(int &amp;amp;a, int &amp;amp;b)&lt;br /&gt;
{&lt;br /&gt;
  int temp;&lt;br /&gt;
   &lt;br /&gt;
  temp = a;&lt;br /&gt;
  a = b;&lt;br /&gt;
  b = temp;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Inside swapargs int specialization.\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int i=10, j=20;&lt;br /&gt;
  double x=10.1, y=23.3;&lt;br /&gt;
  char a=&amp;quot;x&amp;quot;, b=&amp;quot;z&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original a, b: &amp;quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  swapargs(i, j); // calls explicitly overloaded swapargs()&lt;br /&gt;
  swapargs(x, y); // calls generic swapargs()&lt;br /&gt;
  swapargs(a, b); // calls generic swapargs()&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped i, j: &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; j &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped x, y: &amp;quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Swapped a, b: &amp;quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple template function to accept two parameters==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class type1, class type2&amp;gt;&lt;br /&gt;
void myFunction(type1 x, type2 y)&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  myFunction(10, &amp;quot;hi&amp;quot;);&lt;br /&gt;
  myFunction(0.23, 10L);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Template copy array function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template&amp;lt;class TYPE&amp;gt;&lt;br /&gt;
void copy(TYPE a[], TYPE b[], int n)&lt;br /&gt;
{&lt;br /&gt;
   for (int i = 0; i &amp;lt; n; ++i)&lt;br /&gt;
      a[i] = b[i];&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;class TYPE&amp;gt;&lt;br /&gt;
void print(TYPE a[], int n)&lt;br /&gt;
{&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\nNEW PRINT =&amp;quot;;&lt;br /&gt;
   for (int i = 0; i &amp;lt; n; ++i)&lt;br /&gt;
      cout &amp;lt;&amp;lt; a[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
   double  f1[50], f2[50];&lt;br /&gt;
   char    c1[25], c2[50];&lt;br /&gt;
   int     i1[75], i2[75];&lt;br /&gt;
   int     i;&lt;br /&gt;
   for (i = 0; i &amp;lt; 50; ++i) { //init arrays&lt;br /&gt;
      f1[i] = 1.1 + i;&lt;br /&gt;
      f2[i] = 2.2 * i;&lt;br /&gt;
      c2[i] = &amp;quot;A&amp;quot; + i/5;&lt;br /&gt;
   }&lt;br /&gt;
   for (i = 0; i &amp;lt; 25; ++i) { //init arrays&lt;br /&gt;
      c1[i] = &amp;quot;a&amp;quot; + i/8;&lt;br /&gt;
   }&lt;br /&gt;
   for (i = 0; i &amp;lt; 75; ++i) { //init arrays&lt;br /&gt;
      i1[i] = 2 * i;&lt;br /&gt;
      i2[i] = i * i;&lt;br /&gt;
   }&lt;br /&gt;
   print(f1, 20);    //print initial values&lt;br /&gt;
   print(f2, 20);&lt;br /&gt;
   print(i1, 20);&lt;br /&gt;
   print(i2, 20);&lt;br /&gt;
   print(c1, 20);&lt;br /&gt;
   print(c2, 20);&lt;br /&gt;
   copy(f1, f2, 50);&lt;br /&gt;
   copy(c1, c2, 10);&lt;br /&gt;
   copy(i1, i2, 40);&lt;br /&gt;
   print(f1, 20);    //print initial values&lt;br /&gt;
   print(f2, 20);&lt;br /&gt;
   print(i1, 20);&lt;br /&gt;
   print(i2, 20);&lt;br /&gt;
   print(c1, 20);&lt;br /&gt;
   print(c2, 20);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==template function for bubble sort==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class X&amp;gt; void bubble_sort(X *items, int size);&lt;br /&gt;
template &amp;lt;class X&amp;gt; void show_items(X *items, int size);&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   int iarray[7] =      {7, 5, 4, 3, 9, 8, 6};&lt;br /&gt;
   double darray[5] =   {4.2, 2.5, -0.9, 1.2, 3.0};&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is unsorted integer array: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   show_items(iarray, 7);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is unsorted double array: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   show_items(darray, 5);&lt;br /&gt;
   bubble_sort(iarray, 7);&lt;br /&gt;
   bubble_sort(darray, 5);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is sorted integer array: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   show_items(iarray, 7);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is sorted double array: &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
   show_items(darray, 5);&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;class X&amp;gt; void bubble_sort(X *items, int size)&lt;br /&gt;
{&lt;br /&gt;
   register int i, j;&lt;br /&gt;
   X temp;&lt;br /&gt;
   for (i = 1; i &amp;lt; size; i++)&lt;br /&gt;
    for (j = size-1; j &amp;gt;= i; j--)&lt;br /&gt;
      if (items[j-1] &amp;gt; items[j])&lt;br /&gt;
        {&lt;br /&gt;
          temp = items[j-1];&lt;br /&gt;
          items[j-1] = items[j];&lt;br /&gt;
          items[j] = temp;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;class X&amp;gt; void show_items(X *items, int size)&lt;br /&gt;
{&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0; i &amp;lt; size; i++)&lt;br /&gt;
      cout &amp;lt;&amp;lt; items[i] &amp;lt;&amp;lt; &amp;quot;, &amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==template function for compacting the items==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class X&amp;gt; void compact(X *items, int count, int start, int end);&lt;br /&gt;
template &amp;lt;class X&amp;gt; void show_items(X *items, int size);&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   int nums[7] =  {0, 1, 2, 3, 4, 5, 6};&lt;br /&gt;
   char str[18] = &amp;quot;Generic Functions&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is uncompacted integer array: &amp;quot;;&lt;br /&gt;
   show_items(nums, 7);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is the uncompacted char array: &amp;quot;;&lt;br /&gt;
   show_items(str, 18);&lt;br /&gt;
   compact(nums, 7, 2, 4);&lt;br /&gt;
   compact(str, 18, 6, 10);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is compacted integer array: &amp;quot;;&lt;br /&gt;
   show_items(nums, 7);&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;Here is the compacted char array: &amp;quot;;&lt;br /&gt;
   show_items(str, 18);&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;class X&amp;gt; void compact(X *items, int count, int start, int end)&lt;br /&gt;
{&lt;br /&gt;
   register int i;&lt;br /&gt;
   for(i=end+i; i &amp;lt; count; i++, start++)&lt;br /&gt;
      items[start] = items[i];&lt;br /&gt;
   for( ; start&amp;lt;count; start++)&lt;br /&gt;
      items[start] = (X) 0;&lt;br /&gt;
}&lt;br /&gt;
template &amp;lt;class X&amp;gt; void show_items(X *items, int size){&lt;br /&gt;
   int i;&lt;br /&gt;
   for(i=0; i &amp;lt; size; i++)&lt;br /&gt;
      cout &amp;lt;&amp;lt; items[i];&lt;br /&gt;
   cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==template function for find a value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;class X&amp;gt; int find(X object, X *list, int size)&lt;br /&gt;
{&lt;br /&gt;
  int i;&lt;br /&gt;
  for(i = 0; i &amp;lt;size; i++)&lt;br /&gt;
    if(object == list[ i ]) &lt;br /&gt;
       return i;&lt;br /&gt;
  return -1;&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  int a[] = {1, 2, 3, 4};&lt;br /&gt;
  char *c = &amp;quot;this is a test&amp;quot;;&lt;br /&gt;
  double d[] = {1.1, 2.2, 3.3};&lt;br /&gt;
  cout &amp;lt;&amp;lt; find(3, a, 4);&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; find(&amp;quot;a&amp;quot;, c, (int) strlen(c));&lt;br /&gt;
  cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; find(0.0, d, 3);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use a Function Object to Hold state==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;list&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
template &amp;lt;typename elementType&amp;gt;&lt;br /&gt;
struct DisplayCounter&lt;br /&gt;
{&lt;br /&gt;
    int m_nCount;&lt;br /&gt;
    DisplayCounter ()&lt;br /&gt;
    {&lt;br /&gt;
        m_nCount = 0;&lt;br /&gt;
    }&lt;br /&gt;
    // Display the element, hold count!&lt;br /&gt;
    void operator () (const elementType&amp;amp; element)&lt;br /&gt;
    {&lt;br /&gt;
        ++ m_nCount;&lt;br /&gt;
        cout &amp;lt;&amp;lt; element &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
int main ()&lt;br /&gt;
{&lt;br /&gt;
    vector &amp;lt;int&amp;gt; v;&lt;br /&gt;
    for (int nCount = 0; nCount &amp;lt; 10; ++ nCount)&lt;br /&gt;
        v.push_back (nCount);&lt;br /&gt;
    DisplayCounter &amp;lt;int&amp;gt; mResult;&lt;br /&gt;
    mResult = for_each ( v.begin (), v.end (), DisplayCounter &amp;lt;int&amp;gt; () );&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;&amp;quot;&amp;quot; &amp;lt;&amp;lt; mResult.m_nCount &amp;lt;&amp;lt; &amp;quot;&amp;quot; elements were displayed!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using a Binary Function to Multiply Two Ranges==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
template &amp;lt;typename elementType&amp;gt;&lt;br /&gt;
class CMultiply&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    elementType operator () (const elementType&amp;amp; elem1,const elementType&amp;amp; elem2){&lt;br /&gt;
        return (elem1 * elem2);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
int main (){&lt;br /&gt;
    using namespace std;&lt;br /&gt;
    vector &amp;lt;int&amp;gt; v1, v2, vecResult;&lt;br /&gt;
    for (int nCount1 = 0; nCount1 &amp;lt; 10; ++ nCount1)&lt;br /&gt;
        v1.push_back (nCount1);&lt;br /&gt;
    for (int nCount2 = 100; nCount2 &amp;lt; 110; ++ nCount2)&lt;br /&gt;
        v2.push_back (nCount2);&lt;br /&gt;
    vecResult.resize (10);&lt;br /&gt;
    transform ( v1.begin(), &lt;br /&gt;
                v1.end(), &lt;br /&gt;
                v2.begin(),  // multiplier values&lt;br /&gt;
                vecResult.begin(),      // range that holds result&lt;br /&gt;
                CMultiply &amp;lt;int&amp;gt;() );    // the function that multiplies&lt;br /&gt;
    for (size_t nIndex1 = 0; nIndex1 &amp;lt; v1.size (); ++ nIndex1)&lt;br /&gt;
        cout &amp;lt;&amp;lt; v1 [nIndex1] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    for (size_t nIndex2 = 0; nIndex2 &amp;lt; v2.size (); ++nIndex2)&lt;br /&gt;
        cout &amp;lt;&amp;lt; v2 [nIndex2] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    for (size_t nIndex = 0; nIndex &amp;lt; vecResult.size (); ++ nIndex)&lt;br /&gt;
        cout &amp;lt;&amp;lt; vecResult [nIndex] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using Standard Parameters with Template Functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;   &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
const int TABWIDTH = 8;&lt;br /&gt;
   &lt;br /&gt;
// Display data at specified tab position.&lt;br /&gt;
template&amp;lt;class X&amp;gt; void tabOut(X data, int tab)&lt;br /&gt;
{&lt;br /&gt;
  for(; tab; tab--)&lt;br /&gt;
    for(int i=0; i&amp;lt;TABWIDTH; i++) cout &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
    cout &amp;lt;&amp;lt; data &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  tabOut(&amp;quot;This is a test&amp;quot;, 0);&lt;br /&gt;
  tabOut(100, 1);&lt;br /&gt;
  tabOut(&amp;quot;X&amp;quot;, 2);&lt;br /&gt;
  tabOut(10/3, 3);&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==write function object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;functional&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;cctype&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class myIsDigit : public unary_function&amp;lt;char, bool&amp;gt;{&lt;br /&gt;
public:&lt;br /&gt;
  bool operator() (char c) const { return (::isdigit(c)); }&lt;br /&gt;
};&lt;br /&gt;
bool isNumber(const string&amp;amp; str){&lt;br /&gt;
  string::const_iterator it = find_if(str.begin(), str.end(),not1(myIsDigit()));&lt;br /&gt;
  return (it == str.end());&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv){&lt;br /&gt;
  cout &amp;lt;&amp;lt; isNumber(&amp;quot;12345&amp;quot;) &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; isNumber(&amp;quot;hello&amp;quot;) &amp;lt;&amp;lt; endl;&lt;br /&gt;
  cout &amp;lt;&amp;lt; isNumber(&amp;quot;1234a&amp;quot;) &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return (0);&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>