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%2FSet_Multiset%2Fdifference</id>
		<title>C++/Set Multiset/difference - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FSet_Multiset%2Fdifference"/>
		<link rel="alternate" type="text/html" href="http://cppe.ru/index.php?title=C%2B%2B/Set_Multiset/difference&amp;action=history"/>
		<updated>2026-04-10T11:04:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://cppe.ru/index.php?title=C%2B%2B/Set_Multiset/difference&amp;diff=1741&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/Set_Multiset/difference&amp;diff=1741&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/Set_Multiset/difference&amp;diff=1742&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/Set_Multiset/difference&amp;diff=1742&amp;oldid=prev"/>
				<updated>2010-05-25T10:27:49Z</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;==Create the symmetric difference between list1 and list2==&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;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 InIter&amp;gt;&lt;br /&gt;
void show_range(const char *msg, InIter start, InIter end);&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  list&amp;lt;char&amp;gt; list1, list2, result(15);&lt;br /&gt;
  list&amp;lt;char&amp;gt;::iterator res_end;&lt;br /&gt;
  for(int i=0; i &amp;lt; 5; i++) &lt;br /&gt;
     list1.push_back(&amp;quot;A&amp;quot;+i);&lt;br /&gt;
     &lt;br /&gt;
  for(int i=3; i &amp;lt; 10; i++) &lt;br /&gt;
     list2.push_back(&amp;quot;A&amp;quot;+i);&lt;br /&gt;
  &lt;br /&gt;
  show_range(&amp;quot;Contents of list1: &amp;quot;, list1.begin(), list1.end());&lt;br /&gt;
  show_range(&amp;quot;Contents of list2: &amp;quot;, list2.begin(), list2.end());&lt;br /&gt;
  res_end = set_symmetric_difference(list1.begin(), list1.end(),list2.begin(), list2.end(),result.begin());&lt;br /&gt;
  show_range(&amp;quot;Symmetric difference of list1 and list2: &amp;quot;,result.begin(), res_end);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
template&amp;lt;class InIter&amp;gt;&lt;br /&gt;
void show_range(const char *msg, InIter start, InIter end) {&lt;br /&gt;
  InIter itr;&lt;br /&gt;
  cout &amp;lt;&amp;lt; msg &amp;lt;&amp;lt; endl;&lt;br /&gt;
  for(itr = start; itr != end; ++itr)&lt;br /&gt;
    cout &amp;lt;&amp;lt; *itr &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;
==Get the difference between two sets==&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;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
void print(int elem) {&lt;br /&gt;
  cout &amp;lt;&amp;lt; elem &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv) {&lt;br /&gt;
  vector&amp;lt;int&amp;gt; setOne, setTwo, setThree;&lt;br /&gt;
  setOne.push_back(1);&lt;br /&gt;
  setOne.push_back(2);&lt;br /&gt;
  setOne.push_back(3);&lt;br /&gt;
  &lt;br /&gt;
  setTwo.push_back(2);&lt;br /&gt;
  setTwo.push_back(3);&lt;br /&gt;
  setTwo.push_back(4);&lt;br /&gt;
  // set algorithms work on sorted ranges&lt;br /&gt;
  sort(setOne.begin(), setOne.end());&lt;br /&gt;
  sort(setTwo.begin(), setTwo.end());&lt;br /&gt;
&lt;br /&gt;
  vector&amp;lt;int&amp;gt;::iterator  newEnd = set_difference(setOne.begin(), setOne.end(), setTwo.begin(),setTwo.end(), setThree.begin());&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;The difference between set one and set two is: &amp;quot;;&lt;br /&gt;
  for_each(setThree.begin(), newEnd, &amp;amp;print);&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the symmetric difference between two sets==&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;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
void print(int elem) {&lt;br /&gt;
  cout &amp;lt;&amp;lt; elem &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
int main(int argc, char** argv) {&lt;br /&gt;
  vector&amp;lt;int&amp;gt; setOne, setTwo, setThree;&lt;br /&gt;
  setOne.push_back(1);&lt;br /&gt;
  setOne.push_back(2);&lt;br /&gt;
  setOne.push_back(3);&lt;br /&gt;
  &lt;br /&gt;
  setTwo.push_back(2);&lt;br /&gt;
  setTwo.push_back(3);&lt;br /&gt;
  setTwo.push_back(4);&lt;br /&gt;
  // set algorithms work on sorted ranges&lt;br /&gt;
  sort(setOne.begin(), setOne.end());&lt;br /&gt;
  sort(setTwo.begin(), setTwo.end());&lt;br /&gt;
  vector&amp;lt;int&amp;gt;::iterator  newEnd = set_symmetric_difference(setOne.begin(), setOne.end(), setTwo.begin(),setTwo.end(), setThree.begin());&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;The symmetric difference is: &amp;quot;;&lt;br /&gt;
  for_each(setThree.begin(), newEnd, &amp;amp;print);&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==set_difference and back_inserter==&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;iomanip&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;list&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class PC{&lt;br /&gt;
   public:&lt;br /&gt;
   enum part { keyboard, mouse, monitor };&lt;br /&gt;
   PC( part a_part = PC::keyboard, int id = 0 );&lt;br /&gt;
   bool operator&amp;lt;( const PC&amp;amp; rhs ) const;&lt;br /&gt;
   void print() const;&lt;br /&gt;
   private:&lt;br /&gt;
   part part_;&lt;br /&gt;
   int id_;&lt;br /&gt;
};&lt;br /&gt;
inline&lt;br /&gt;
PC::PC( part a_part, int id ) : part_( a_part ), id_( id ){}&lt;br /&gt;
inline bool PC::operator&amp;lt;( const PC&amp;amp; rhs ) const{  &lt;br /&gt;
   return id_ &amp;lt; rhs.id_; &lt;br /&gt;
}&lt;br /&gt;
void PC::print() const {&lt;br /&gt;
   string component;&lt;br /&gt;
   if( part_ == keyboard )&lt;br /&gt;
      component = &amp;quot;keyboard&amp;quot;;&lt;br /&gt;
   else if( part_ == mouse )&lt;br /&gt;
      component = &amp;quot;mouse&amp;quot;;&lt;br /&gt;
   else&lt;br /&gt;
      component = &amp;quot;monitor&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;ID: &amp;quot; &amp;lt;&amp;lt; setw( 8 ) &amp;lt;&amp;lt; left &amp;lt;&amp;lt; id_ &amp;lt;&amp;lt; &amp;quot; PC: &amp;quot; &amp;lt;&amp;lt; component &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
int main( )&lt;br /&gt;
{&lt;br /&gt;
   list&amp;lt;PC&amp;gt; listA;&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 3 ) );&lt;br /&gt;
   listA.push_back( PC( PC::mouse, 1 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 9 ) );&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 2 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 8 ) );&lt;br /&gt;
   list&amp;lt;PC&amp;gt; inspector_B( listA );&lt;br /&gt;
   inspector_B.front() = PC( PC::mouse, 6 );&lt;br /&gt;
   inspector_B.back() = PC( PC::monitor, 1 );&lt;br /&gt;
   // must sort before using set algorithms&lt;br /&gt;
   listA.sort();&lt;br /&gt;
   inspector_B.sort();&lt;br /&gt;
   for_each( listA.begin(), listA.end(),mem_fun_ref( &amp;amp;PC::print ) );&lt;br /&gt;
   for_each( inspector_B.begin(), inspector_B.end(),mem_fun_ref( &amp;amp;PC::print ) );&lt;br /&gt;
   vector&amp;lt;PC&amp;gt; result;&lt;br /&gt;
   result.clear();&lt;br /&gt;
   set_difference( listA.begin(), listA.end(),inspector_B.begin(), inspector_B.end(),back_inserter( result ) );&lt;br /&gt;
   for_each( result.begin(), result.end(),mem_fun_ref( &amp;amp;PC::print ) );&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 set_difference to get values from only one list==&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;iomanip&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;list&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class PC&lt;br /&gt;
{&lt;br /&gt;
   public:&lt;br /&gt;
   enum part { keyboard, mouse, monitor };&lt;br /&gt;
   PC( part a_part = PC::keyboard, int id = 0 );&lt;br /&gt;
   bool operator&amp;lt;( const PC&amp;amp; rhs ) const;&lt;br /&gt;
   void print() const;&lt;br /&gt;
   private:&lt;br /&gt;
   part part_;&lt;br /&gt;
   int id_;&lt;br /&gt;
};&lt;br /&gt;
inline&lt;br /&gt;
PC::PC( part a_part, int id ) : part_( a_part ), id_( id ){}&lt;br /&gt;
inline bool PC::operator&amp;lt;( const PC&amp;amp; rhs ) const{  &lt;br /&gt;
   return id_ &amp;lt; rhs.id_; &lt;br /&gt;
}&lt;br /&gt;
void PC::print() const {&lt;br /&gt;
   string component;&lt;br /&gt;
   if( part_ == keyboard )&lt;br /&gt;
      component = &amp;quot;keyboard&amp;quot;;&lt;br /&gt;
   else if( part_ == mouse )&lt;br /&gt;
      component = &amp;quot;mouse&amp;quot;;&lt;br /&gt;
   else&lt;br /&gt;
      component = &amp;quot;monitor&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;ID: &amp;quot; &amp;lt;&amp;lt; setw( 8 ) &amp;lt;&amp;lt; left &amp;lt;&amp;lt; id_ &amp;lt;&amp;lt; &amp;quot; PC: &amp;quot; &amp;lt;&amp;lt; component &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
int main( )&lt;br /&gt;
{&lt;br /&gt;
   list&amp;lt;PC&amp;gt; listA;&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 3 ) );&lt;br /&gt;
   listA.push_back( PC( PC::mouse, 1 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 9 ) );&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 2 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 8 ) );&lt;br /&gt;
   list&amp;lt;PC&amp;gt; inspector_B( listA );&lt;br /&gt;
   inspector_B.front() = PC( PC::mouse, 6 );&lt;br /&gt;
   inspector_B.back() = PC( PC::monitor, 1 );&lt;br /&gt;
   // must sort before using set algorithms&lt;br /&gt;
   listA.sort();&lt;br /&gt;
   inspector_B.sort();&lt;br /&gt;
   vector&amp;lt;PC&amp;gt; result;&lt;br /&gt;
   // make vector large enough to hold all inspected parts&lt;br /&gt;
   result.resize( listA.size() + inspector_B.size() );&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\n\nlist B ONLY\n&amp;quot;;&lt;br /&gt;
   vector&amp;lt;PC&amp;gt;::iterator the_end =set_difference( inspector_B.begin(), inspector_B.end(),listA.begin(), listA.end(), result.begin() );&lt;br /&gt;
   for_each( result.begin(), the_end, mem_fun_ref( &amp;amp;PC::print ) );&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 set_symmetric_difference() to get the difference between two lists==&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;iomanip&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;list&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class PC&lt;br /&gt;
{&lt;br /&gt;
   public:&lt;br /&gt;
   enum part { keyboard, mouse, monitor };&lt;br /&gt;
   PC( part a_part = PC::keyboard, int id = 0 );&lt;br /&gt;
   bool operator&amp;lt;( const PC&amp;amp; rhs ) const;&lt;br /&gt;
   void print() const;&lt;br /&gt;
   private:&lt;br /&gt;
   part part_;&lt;br /&gt;
   int id_;&lt;br /&gt;
};&lt;br /&gt;
inline&lt;br /&gt;
PC::PC( part a_part, int id ) : part_( a_part ), id_( id ){}&lt;br /&gt;
inline bool PC::operator&amp;lt;( const PC&amp;amp; rhs ) const{  &lt;br /&gt;
   return id_ &amp;lt; rhs.id_; &lt;br /&gt;
}&lt;br /&gt;
void PC::print() const {&lt;br /&gt;
   string component;&lt;br /&gt;
   if( part_ == keyboard )&lt;br /&gt;
      component = &amp;quot;keyboard&amp;quot;;&lt;br /&gt;
   else if( part_ == mouse )&lt;br /&gt;
      component = &amp;quot;mouse&amp;quot;;&lt;br /&gt;
   else&lt;br /&gt;
      component = &amp;quot;monitor&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;ID: &amp;quot; &amp;lt;&amp;lt; setw( 8 ) &amp;lt;&amp;lt; left &amp;lt;&amp;lt; id_ &amp;lt;&amp;lt; &amp;quot; PC: &amp;quot; &amp;lt;&amp;lt; component &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
int main( )&lt;br /&gt;
{&lt;br /&gt;
   list&amp;lt;PC&amp;gt; listA;&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 3 ) );&lt;br /&gt;
   listA.push_back( PC( PC::mouse, 1 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 9 ) );&lt;br /&gt;
   listA.push_back( PC( PC::keyboard, 2 ) );&lt;br /&gt;
   listA.push_back( PC( PC::monitor, 8 ) );&lt;br /&gt;
   list&amp;lt;PC&amp;gt; inspector_B( listA );&lt;br /&gt;
   inspector_B.front() = PC( PC::mouse, 6 );&lt;br /&gt;
   inspector_B.back() = PC( PC::monitor, 1 );&lt;br /&gt;
   // must sort before using set algorithms&lt;br /&gt;
   listA.sort();&lt;br /&gt;
   inspector_B.sort();&lt;br /&gt;
   for_each( listA.begin(), listA.end(),mem_fun_ref( &amp;amp;PC::print ) );&lt;br /&gt;
   for_each( inspector_B.begin(), inspector_B.end(),mem_fun_ref( &amp;amp;PC::print ) );&lt;br /&gt;
   vector&amp;lt;PC&amp;gt; result;&lt;br /&gt;
   // make vector large enough to hold all inspected parts&lt;br /&gt;
   result.resize( listA.size() + inspector_B.size() );&lt;br /&gt;
   vector&amp;lt;PC&amp;gt;::iterator the_end = set_symmetric_difference( listA.begin(),listA.end(), inspector_B.begin(), inspector_B.end(),result.begin() );&lt;br /&gt;
   for_each( result.begin(), the_end, mem_fun_ref( &amp;amp;PC::print ) );&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>