home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _9f92c6369a3f81bb0bc78fcb9777b3d0 < prev    next >
Text File  |  2000-03-23  |  8KB  |  223 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Set::Object - set of objects</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Set::Object - set of objects</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#class methods">CLASS METHODS</A></LI>
  26.     <UL>
  27.  
  28.         <LI><A HREF="#new( [list] )">new( [<EM>list</EM>] )</A></LI>
  29.     </UL>
  30.  
  31.     <LI><A HREF="#instance methods">INSTANCE METHODS</A></LI>
  32.     <UL>
  33.  
  34.         <LI><A HREF="#insert( [list] )">insert( [<EM>list</EM>] )</A></LI>
  35.         <LI><A HREF="#includes( [list] )">includes( [<EM>list</EM>] )</A></LI>
  36.         <LI><A HREF="#members">members</A></LI>
  37.         <LI><A HREF="#size">size</A></LI>
  38.         <LI><A HREF="#remove( [list] )">remove( [<EM>list</EM>] )</A></LI>
  39.         <LI><A HREF="#clear">clear</A></LI>
  40.         <LI><A HREF="#as_string">as_string</A></LI>
  41.         <LI><A HREF="#intersection( [list] )">intersection( [<EM>list</EM>] )</A></LI>
  42.         <LI><A HREF="#union( [list] )">union( [<EM>list</EM>] )</A></LI>
  43.         <LI><A HREF="#subset( set )">subset( <EM>set</EM> )</A></LI>
  44.         <LI><A HREF="#proper_subset( set )">proper_subset( <EM>set</EM> )</A></LI>
  45.         <LI><A HREF="#superset( set )">superset( <EM>set</EM> )</A></LI>
  46.         <LI><A HREF="#proper_superset( set )">proper_superset( <EM>set</EM> )</A></LI>
  47.     </UL>
  48.  
  49.     <LI><A HREF="#installation">INSTALLATION</A></LI>
  50.     <LI><A HREF="#performance">PERFORMANCE</A></LI>
  51.     <LI><A HREF="#author">AUTHOR</A></LI>
  52.     <LI><A HREF="#licence">LICENCE</A></LI>
  53.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  54. </UL>
  55. <!-- INDEX END -->
  56.  
  57. <HR>
  58. <P>
  59. <H1><A NAME="name">NAME</A></H1>
  60. <P>Set::Object - set of objects</P>
  61. <P>
  62. <HR>
  63. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  64. <UL>
  65. <LI>Linux</LI>
  66. <LI>Solaris</LI>
  67. <LI>Windows</LI>
  68. </UL>
  69. <HR>
  70. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  71. <PRE>
  72.   use Set::Object;
  73.   $set = Set::Object->new();</PRE>
  74. <P>
  75. <HR>
  76. <H1><A NAME="description">DESCRIPTION</A></H1>
  77. <P>This modules implements a set of objects, that is, an unordered
  78. collection of objects without duplication.</P>
  79. <P>
  80. <HR>
  81. <H1><A NAME="class methods">CLASS METHODS</A></H1>
  82. <P>
  83. <H2><A NAME="new( [list] )">new( [<EM>list</EM>] )</A></H2>
  84. <P>Return a new <CODE>Set::Object</CODE> containing the elements passed in <EM>list</EM>.
  85. The elements must be objects.</P>
  86. <P>
  87. <HR>
  88. <H1><A NAME="instance methods">INSTANCE METHODS</A></H1>
  89. <P>
  90. <H2><A NAME="insert( [list] )">insert( [<EM>list</EM>] )</A></H2>
  91. <P>Add objects to the <CODE>Set::Object</CODE>.
  92. Adding the same object several times is not an error,
  93. but any <CODE>Set::Object</CODE> will contain at most one occurence of the
  94. same object.
  95. Returns the number of elements that were actually added.</P>
  96. <P>
  97. <H2><A NAME="includes( [list] )">includes( [<EM>list</EM>] )</A></H2>
  98. <P>Return <CODE>true</CODE> if all the objects in <EM>list</EM> are members of the <CODE>Set::Object</CODE>.
  99. <EM>list</EM> may be empty, in which case <CODE>true</CODE> is returned.</P>
  100. <P>
  101. <H2><A NAME="members">members</A></H2>
  102. <P>Return the objects contained in the <CODE>Set::Object</CODE>.</P>
  103. <P>
  104. <H2><A NAME="size">size</A></H2>
  105. <P>Return the number of elements in the <CODE>Set::Object</CODE>.</P>
  106. <P>
  107. <H2><A NAME="remove( [list] )">remove( [<EM>list</EM>] )</A></H2>
  108. <P>Remove objects from a <CODE>Set::Object</CODE>.
  109. Removing the same object more than once, or removing an object
  110. absent from the <CODE>Set::Object</CODE> is not an error.
  111. Returns the number of elements that were actually removed.</P>
  112. <P>
  113. <H2><A NAME="clear">clear</A></H2>
  114. <P>Empty this <CODE>Set::Object</CODE>.</P>
  115. <P>
  116. <H2><A NAME="as_string">as_string</A></H2>
  117. <P>Return a textual Smalltalk-ish representation of the <CODE>Set::Object</CODE>.
  118. Also available as overloaded operator ``''.</P>
  119. <P>
  120. <H2><A NAME="intersection( [list] )">intersection( [<EM>list</EM>] )</A></H2>
  121. <P>Return a new <CODE>Set::Object</CODE> containing the intersection of the 
  122. <CODE>Set::Object</CODE>s passed as arguments.
  123. Also available as overloaded operator *.</P>
  124. <P>
  125. <H2><A NAME="union( [list] )">union( [<EM>list</EM>] )</A></H2>
  126. <P>Return a new <CODE>Set::Object</CODE> containing the union of the 
  127. <CODE>Set::Object</CODE>s passed as arguments.
  128. Also available as overloaded operator +.</P>
  129. <P>
  130. <H2><A NAME="subset( set )">subset( <EM>set</EM> )</A></H2>
  131. <P>Return <CODE>true</CODE> if this <CODE>Set::Object</CODE> is a subset of <EM>set</EM>.
  132. Also available as operator <=.</P>
  133. <P>
  134. <H2><A NAME="proper_subset( set )">proper_subset( <EM>set</EM> )</A></H2>
  135. <P>Return <CODE>true</CODE> if this <CODE>Set::Object</CODE> is a proper subset of <EM>set</EM>
  136. Also available as operator <.</P>
  137. <P>
  138. <H2><A NAME="superset( set )">superset( <EM>set</EM> )</A></H2>
  139. <P>Return <CODE>true</CODE> if this <CODE>Set::Object</CODE> is a superset of <EM>set</EM>.
  140. Also available as operator >=.</P>
  141. <P>
  142. <H2><A NAME="proper_superset( set )">proper_superset( <EM>set</EM> )</A></H2>
  143. <P>Return <CODE>true</CODE> if this <CODE>Set::Object</CODE> is a proper superset of <EM>set</EM>
  144. Also available as operator >.</P>
  145. <P>
  146. <HR>
  147. <H1><A NAME="installation">INSTALLATION</A></H1>
  148. <P>This module is partly written in C, so you'll need a C compiler to install it.
  149. Use the familiar sequence:</P>
  150. <PRE>
  151.    perl Makefile.PL
  152.    make
  153.    make test
  154.    make install</PRE>
  155. <P>This module was developed on Windows NT 4.0, using the Visual C++
  156. compiler with Service Pack 2. It was also tested on AIX using IBM's
  157. xlc compiler.</P>
  158. <P>
  159. <HR>
  160. <H1><A NAME="performance">PERFORMANCE</A></H1>
  161. <P>The following benchmark compares <CODE>Set::Object</CODE> with using a hash to
  162. emulate a set-like collection:</P>
  163. <PRE>
  164.    use Set::Object;</PRE>
  165. <PRE>
  166.    package Obj;
  167.    sub new { bless { } }</PRE>
  168. <PRE>
  169.    @els = map { Obj->new() } 1..1000;</PRE>
  170. <PRE>
  171.    require Benchmark;</PRE>
  172. <PRE>
  173.    Benchmark::timethese(100, {
  174.       'Control' => sub { },
  175.       'H insert' => sub { my %h = (); @h{@els} = @els; },
  176.       'S insert' => sub { my $s = Set::Object->new(); $s->insert(@els) },
  177.       } );</PRE>
  178. <PRE>
  179.    %gh = ();
  180.    @gh{@els} = @els;</PRE>
  181. <PRE>
  182.    $gs = Set::Object->new(@els);
  183.    $el = $els[33];</PRE>
  184. <PRE>
  185.    Benchmark::timethese(100_000, {
  186.            'H lookup' => sub { exists $gh{33} },
  187.            'S lookup' => sub { $gs->includes($el) }
  188.       } );</PRE>
  189. <P>On my computer the results are:</P>
  190. <PRE>
  191.    Benchmark: timing 100 iterations of Control, H insert, S insert...
  192.       Control:  0 secs ( 0.01 usr  0.00 sys =  0.01 cpu)
  193.                (warning: too few iterations for a reliable count)
  194.      H insert: 68 secs (67.81 usr  0.00 sys = 67.81 cpu)
  195.      S insert:  9 secs ( 8.81 usr  0.00 sys =  8.81 cpu)
  196.    Benchmark: timing 100000 iterations of H lookup, S lookup...
  197.      H lookup:  7 secs ( 7.14 usr  0.00 sys =  7.14 cpu)
  198.      S lookup:  6 secs ( 5.94 usr  0.00 sys =  5.94 cpu)</PRE>
  199. <P>
  200. <HR>
  201. <H1><A NAME="author">AUTHOR</A></H1>
  202. <P>Jean-Louis Leroy, <A HREF="mailto:jll@skynet.be">jll@skynet.be</A></P>
  203. <P>
  204. <HR>
  205. <H1><A NAME="licence">LICENCE</A></H1>
  206. <P>Copyright (c) 1998-1999, Jean-Louis Leroy. All Rights Reserved.
  207. This module is free software. It may be used, redistributed
  208. and/or modified under the terms of the Perl Artistic License</P>
  209. <P>
  210. <HR>
  211. <H1><A NAME="see also">SEE ALSO</A></H1>
  212. <P>perl(1).
  213. overload.pm</P>
  214. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  215. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  216. <STRONG><P CLASS=block> Set::Object - set of objects</P></STRONG>
  217. </TD></TR>
  218. </TABLE>
  219.  
  220. </BODY>
  221.  
  222. </HTML>
  223.