Algorithmic Solutions > LEDA > LEDA Guide > Simple, Basic, and Advanced Data Types > Basic Data Types > Dynamic Integer Set

Dynamic Integer Sets

The data type d_int_set can be used to store a set of ints. Dynamic Integer Sets are an extension of Integer Sets.

Example

The following program shows how to use Dynamic Integer Sets. It generates a d_int_set DIS and inserts 100 ints into DIS. Then it searches for entries 37 and 168 in IS.
#include <LEDA/core/d_int_set.h>

int main()
{
  leda::d_int_set DIS;
  DIS.insert(1);
  DIS.insert(200);
		
  int i;
  for (i=2; i<=99; i++) DIS.insert(2*i);
  
  if (DIS.member(37)) std::cout << "37 is stored in S\n";
  else std::cout << "37 is not an element of S\n";

  if (DIS.member(168)) std::cout << "168 is stored in S\n";
  else std::cout << "168 is not an element of S\n";
  
  return 0;
}

Strengths

  • insert(), delete() need only constant time if the minimum and maximum is not changed
  • all operations are fast (data type uses parallelism at word level)
  • data type is space efficient
  • various set operations predefined

Disadvantages

  • inserting a new minimum or maximum results in a reallocation operation
  • restricted to ints (alternative: Sets)

Tips

  • Use Dynamic Integer Sets instead of Integer Sets if you do not know in advance the interval of the ints you want to store.
  • If you want to store objects other than int, consider using a Set, a Linear List or a One Dimensional Array.
  • To avoid unnecessary reallocations store minimal and maximal element first.

See also:

Integer Sets

Sets

Linear Lists

One Dimensional Arrays


Manual page Dynamic Integer Sets




Please send any suggestions, comments or questions to leda@algorithmic-solutions.com
© Copyright 2001-2003, Algorithmic Solutions Software GmbH