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_Tutorial%2FSTL_Introduction%2Farray_algorithms</id>
		<title>C++ Tutorial/STL Introduction/array algorithms - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FSTL_Introduction%2Farray_algorithms"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B_Tutorial/STL_Introduction/array_algorithms&amp;action=history"/>
		<updated>2026-04-11T00:49:10Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B_Tutorial/STL_Introduction/array_algorithms&amp;diff=2501&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_Tutorial/STL_Introduction/array_algorithms&amp;diff=2501&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:17Z</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_Tutorial/STL_Introduction/array_algorithms&amp;diff=2502&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_Tutorial/STL_Introduction/array_algorithms&amp;diff=2502&amp;oldid=prev"/>
				<updated>2010-05-25T10:29:52Z</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;==Illustrating the generic adjacent_difference algorithm==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cassert&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;numeric&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  const int N = 20;&lt;br /&gt;
  int x1[N], x2[N];&lt;br /&gt;
  for (int i = 0; i &amp;lt; N; ++i)&lt;br /&gt;
    x1[i] = i;&lt;br /&gt;
  // Compute the partial sums of 0, 1, 2, 3, ..., N - 1, putting the result inx2:&lt;br /&gt;
  partial_sum(&amp;amp;x1[0], &amp;amp;x1[N], &amp;amp;x2[0]);&lt;br /&gt;
  // Compute the adjacent differences of elements in x2, placing the result back in x2:&lt;br /&gt;
  adjacent_difference(&amp;amp;x2[0], &amp;amp;x2[N], &amp;amp;x2[0]);&lt;br /&gt;
  for (int i = 0; i &amp;lt; N; ++i)&lt;br /&gt;
      cout &amp;lt;&amp;lt; x2[i] &amp;lt;&amp;lt; &amp;quot;  &amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Illustrating the generic inner_product algorithm with predicate==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;algorithm&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;numeric&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  const int N = 5;&lt;br /&gt;
  int x1[N], x2[N];&lt;br /&gt;
  for (int i = 0; i &amp;lt; N; ++i) {&lt;br /&gt;
    x1[i] = i + 1;&lt;br /&gt;
    x2[i] = i + 2;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // compute &amp;quot;inner product,&amp;quot; with roles of + and * reversed:&lt;br /&gt;
  int result = inner_product(&amp;amp;x1[0], &amp;amp;x1[N], &amp;amp;x2[0], 1,multiplies&amp;lt;int&amp;gt;(), plus&amp;lt;int&amp;gt;());&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Inner product with roles of + and * reversed: &amp;quot; &amp;lt;&amp;lt; result &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Inner product with roles of + and * reversed: 10395&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Illustrating the generic partial_sum algorithm==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;numeric&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  const int N = 20;&lt;br /&gt;
  int x1[N], x2[N];&lt;br /&gt;
  for (int i = 0; i &amp;lt; N; ++i)&lt;br /&gt;
    x1[i] = i;&lt;br /&gt;
  // Compute the partial sums of 0, 1, 2, 3, ..., N - 1, putting the result inx2:&lt;br /&gt;
  partial_sum(&amp;amp;x1[0], &amp;amp;x1[N], &amp;amp;x2[0]);&lt;br /&gt;
  for (int i = 0; i &amp;lt; N; ++i)&lt;br /&gt;
    cout &amp;lt;&amp;lt; x2[i] &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use random_shuffle algorithms with array==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;cassert&amp;gt;&lt;br /&gt;
#include &amp;lt;functional&amp;gt;  &lt;br /&gt;
using namespace std;&lt;br /&gt;
int main() {&lt;br /&gt;
  int a[100];&lt;br /&gt;
  int i;&lt;br /&gt;
  for (i = 0; i &amp;lt; 100; ++i) &lt;br /&gt;
    a[i] = i;&lt;br /&gt;
  random_shuffle(&amp;amp;a[0], &amp;amp;a[100]);&lt;br /&gt;
  for (i = 0; i &amp;lt; 100; ++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;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;12 1 9 98 96 27 58 82 86 90 18 62 32 40 71 51 91 41 94 17 8 47 64 66 65 7 6 76 5&lt;br /&gt;
 99 77 81 54 35 56 39 25 3 87 16 61 68 14 13 24 55 97 19 20 59 75 33 21 28 78 15&lt;br /&gt;
 50 34 36 44 83 38 46 60 84 95 57 22 37 23 70 89 31 79 73 92 11 2 88 42 30 52 72&lt;br /&gt;
 53 67 29 85 43 74 69 45 26 93 10 48 80 0 63 49 4 &amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use the generic partition algorithms: Partition array1, putting numbers greater than 4 first, followed by those less than or equal to 4==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;iterator&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
bool above40(int n) { return (n &amp;gt; 4); }&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  const int N = 7;&lt;br /&gt;
  int array0[N] = {5, 3, 1, 7, 6, 4, 2};&lt;br /&gt;
  int array1[N];&lt;br /&gt;
  copy(&amp;amp;array0[0], &amp;amp;array0[N], &amp;amp;array1[0]);&lt;br /&gt;
  ostream_iterator&amp;lt;int&amp;gt; out(cout, &amp;quot; &amp;quot;);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Original sequence:                 &amp;quot;;&lt;br /&gt;
  copy(&amp;amp;array1[0], &amp;amp;array1[N], out); cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
  int* split = partition(&amp;amp;array1[0], &amp;amp;array1[N], above40);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Result of (unstable) partitioning: &amp;quot;;&lt;br /&gt;
  copy(&amp;amp;array1[0], split, out); cout &amp;lt;&amp;lt; &amp;quot;| &amp;quot;;&lt;br /&gt;
  copy(split, &amp;amp;array1[N], out); cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Original sequence:                 5 3 1 7 6 4 2&lt;br /&gt;
Result of (unstable) partitioning: 5 6 7 | 1 3 4 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using function templates to get the max and min value in an array==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using std::cout;&lt;br /&gt;
using std::endl;&lt;br /&gt;
&lt;br /&gt;
template&amp;lt;class T&amp;gt; T max(const T* data, int size) {&lt;br /&gt;
    T result = data[0];&lt;br /&gt;
    for(int i = 1 ; i &amp;lt; size ; i++)&lt;br /&gt;
      if(result &amp;lt; data[i])&lt;br /&gt;
        result = data[i];&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
template&amp;lt;class T&amp;gt; T min(const T* data, int size) {&lt;br /&gt;
    T result = data[0];&lt;br /&gt;
    for(int i = 1 ; i &amp;lt; size ; i++)&lt;br /&gt;
      if(result &amp;gt; data[i])&lt;br /&gt;
        result = data[i];&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  double data[] = {1.5, 4.6, 3.1, 1.1, 3.8, 2.1};&lt;br /&gt;
  int numbers[] = {2, 22, 4, 6, 122, 12, 1, 45};&lt;br /&gt;
  const int dataSize = sizeof data/sizeof data[0];&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Minimum double is &amp;quot; &amp;lt;&amp;lt; min(data, dataSize) &amp;lt;&amp;lt; endl; &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Maximum double is &amp;quot; &amp;lt;&amp;lt; max(data, dataSize) &amp;lt;&amp;lt; endl; &lt;br /&gt;
  const int numbersSize = sizeof numbers/sizeof numbers[0];&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Minimum integer is &amp;quot; &amp;lt;&amp;lt; min(numbers, numbersSize) &amp;lt;&amp;lt; endl; &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Maximum integer is &amp;quot; &amp;lt;&amp;lt; max(numbers, numbersSize) &amp;lt;&amp;lt; endl;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Minimum double is 1.1&lt;br /&gt;
Maximum double is 4.6&lt;br /&gt;
Minimum integer is 1&lt;br /&gt;
Maximum integer is 122&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using reverse_copy to copy the array reversely==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;cassert&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main() {&lt;br /&gt;
  int a[100], b[100];&lt;br /&gt;
  int i;&lt;br /&gt;
  for (i = 0; i &amp;lt; 100; ++i) &lt;br /&gt;
    a[i] = i;&lt;br /&gt;
  reverse_copy(&amp;amp;a[0], &amp;amp;a[100], &amp;amp;b[0]);&lt;br /&gt;
 &lt;br /&gt;
  for (i = 0; i &amp;lt; 100; ++i) &lt;br /&gt;
     cout &amp;lt;&amp;lt; &amp;quot; a: &amp;quot;&amp;lt;&amp;lt; a[i] &amp;lt;&amp;lt; &amp;quot;b: &amp;quot; &amp;lt;&amp;lt;  b[i] &amp;lt;&amp;lt; &amp;quot; \n&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;a: 0b: 99&lt;br /&gt;
 a: 1b: 98&lt;br /&gt;
 a: 2b: 97&lt;br /&gt;
 a: 3b: 96&lt;br /&gt;
 a: 4b: 95&lt;br /&gt;
 a: 5b: 94&lt;br /&gt;
 a: 6b: 93&lt;br /&gt;
 a: 7b: 92&lt;br /&gt;
 a: 8b: 91&lt;br /&gt;
 a: 9b: 90&lt;br /&gt;
 a: 10b: 89&lt;br /&gt;
 a: 11b: 88&lt;br /&gt;
 a: 12b: 87&lt;br /&gt;
 a: 13b: 86&lt;br /&gt;
 a: 14b: 85&lt;br /&gt;
 a: 15b: 84&lt;br /&gt;
 a: 16b: 83&lt;br /&gt;
 a: 17b: 82&lt;br /&gt;
 a: 18b: 81&lt;br /&gt;
 a: 19b: 80&lt;br /&gt;
 a: 20b: 79&lt;br /&gt;
 a: 21b: 78&lt;br /&gt;
 a: 22b: 77&lt;br /&gt;
 a: 23b: 76&lt;br /&gt;
 a: 24b: 75&lt;br /&gt;
 a: 25b: 74&lt;br /&gt;
 a: 26b: 73&lt;br /&gt;
 a: 27b: 72&lt;br /&gt;
 a: 28b: 71&lt;br /&gt;
 a: 29b: 70&lt;br /&gt;
 a: 30b: 69&lt;br /&gt;
 a: 31b: 68&lt;br /&gt;
 a: 32b: 67&lt;br /&gt;
 a: 33b: 66&lt;br /&gt;
 a: 34b: 65&lt;br /&gt;
 a: 35b: 64&lt;br /&gt;
 a: 36b: 63&lt;br /&gt;
 a: 37b: 62&lt;br /&gt;
 a: 38b: 61&lt;br /&gt;
 a: 39b: 60&lt;br /&gt;
 a: 40b: 59&lt;br /&gt;
 a: 41b: 58&lt;br /&gt;
 a: 42b: 57&lt;br /&gt;
 a: 43b: 56&lt;br /&gt;
 a: 44b: 55&lt;br /&gt;
 a: 45b: 54&lt;br /&gt;
 a: 46b: 53&lt;br /&gt;
 a: 47b: 52&lt;br /&gt;
 a: 48b: 51&lt;br /&gt;
 a: 49b: 50&lt;br /&gt;
 a: 50b: 49&lt;br /&gt;
 a: 51b: 48&lt;br /&gt;
 a: 52b: 47&lt;br /&gt;
 a: 53b: 46&lt;br /&gt;
 a: 54b: 45&lt;br /&gt;
 a: 55b: 44&lt;br /&gt;
 a: 56b: 43&lt;br /&gt;
 a: 57b: 42&lt;br /&gt;
 a: 58b: 41&lt;br /&gt;
 a: 59b: 40&lt;br /&gt;
 a: 60b: 39&lt;br /&gt;
 a: 61b: 38&lt;br /&gt;
 a: 62b: 37&lt;br /&gt;
 a: 63b: 36&lt;br /&gt;
 a: 64b: 35&lt;br /&gt;
 a: 65b: 34&lt;br /&gt;
 a: 66b: 33&lt;br /&gt;
 a: 67b: 32&lt;br /&gt;
 a: 68b: 31&lt;br /&gt;
 a: 69b: 30&lt;br /&gt;
 a: 70b: 29&lt;br /&gt;
 a: 71b: 28&lt;br /&gt;
 a: 72b: 27&lt;br /&gt;
 a: 73b: 26&lt;br /&gt;
 a: 74b: 25&lt;br /&gt;
 a: 75b: 24&lt;br /&gt;
 a: 76b: 23&lt;br /&gt;
 a: 77b: 22&lt;br /&gt;
 a: 78b: 21&lt;br /&gt;
 a: 79b: 20&lt;br /&gt;
 a: 80b: 19&lt;br /&gt;
 a: 81b: 18&lt;br /&gt;
 a: 82b: 17&lt;br /&gt;
 a: 83b: 16&lt;br /&gt;
 a: 84b: 15&lt;br /&gt;
 a: 85b: 14&lt;br /&gt;
 a: 86b: 13&lt;br /&gt;
 a: 87b: 12&lt;br /&gt;
 a: 88b: 11&lt;br /&gt;
 a: 89b: 10&lt;br /&gt;
 a: 90b: 9&lt;br /&gt;
 a: 91b: 8&lt;br /&gt;
 a: 92b: 7&lt;br /&gt;
 a: 93b: 6&lt;br /&gt;
 a: 94b: 5&lt;br /&gt;
 a: 95b: 4&lt;br /&gt;
 a: 96b: 3&lt;br /&gt;
 a: 97b: 2&lt;br /&gt;
 a: 98b: 1&lt;br /&gt;
 a: 99b: 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using the STL generic reverse algorithm with an array==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;cassert&amp;gt; &lt;br /&gt;
#include &amp;lt;algorithm&amp;gt; // For reverse algorithm&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  char array1[] = &amp;quot;abc&amp;quot;;&lt;br /&gt;
  int N1 = strlen(array1);&lt;br /&gt;
  reverse(&amp;amp;array1[0], &amp;amp;array1[N1]);&lt;br /&gt;
  assert (string(array1) == &amp;quot;cba&amp;quot;);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>