Site Archive (Complete)
C++
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
June 08, 2007
The C5 Generic Collection Library

A .NET 2.0 collection library that supports advanced functionality

(Page 1 of 6)
Niels Kokholm and Peter Sestoft
Collection libraries provide functionality for storing and manipulating collections of related data items.
Niels holds a Ph.D. in mathematics and is a software developer at Edlund A/S in Copenhagen. Peter is a professor in information technology at the IT University of Copenhagen. They can be contacted at kokholm@itu.dk and sestoft@dina.kvl.dk, respectively.


Collection libraries provide functionality for storing and manipulating collections of related data items. Typically, they implement array lists, linked lists, hash- and order-based sets, bags (multisets), hash- and tree-based dictionaries, priority queues, and so on. Collection libraries are useful in applications ranging from computer games and computer graphics, to optimization, compilers, operating systems, and web servers, to name a few. A good library lets you work at a higher level of abstraction, uses generic types for improved expressiveness and type safety, and improves performance by providing good algorithms and data structures.

Microsoft .NET 2.0 comes with a standard collection library in namespace System.Collections.Generic (msdn2.microsoft.com/en-US/library/system.collections.generic.aspx). Although useful and fast for many purposes, SCG lacks basic features such as sets and bags, and advanced features such as interval queries on sorted sets and sorted dictionaries, event listeners on collection updates, and the like. And to squeeze out the last nanoseconds of efficiency, the standard collection library mostly uses nonvirtual methods, which limits reuse and extendibility of the collection classes.

Another .NET collection library, Peter Golde's PowerCollections (www.wintellect.com/MemberOnly/PowerCollections.aspx), extends rather than replaces the standard .NET collection classes. However, this approach is also a disadvantage because it inherits some of its limitations. Additionally, the PowerCollections license may prohibit use in projects that involve GPL software.

With all this in mind, we designed and developed the C5 collection library, which supports advanced functionality and accommodates new and currently unforeseen kinds of collection classes. The C5 collection library, which was built for Microsoft .NET 2.0 and Mono 1.2, is open source and available in source and binary form at www.itu.dk/research/c5. The library's license lets you freely use it with commercial and open-source projects.

1 Collection Libraries | 2 Design Principles | 3 Unusual Functionality | 4 A Convex Hull Example | 5 A Multidictionary Example | 6 Implementation Challenges Next Page
TOP 5 ARTICLES
No Top Articles.
DR. DOBB'S CAREER CENTER
Ready to take that job and shove it? open | close
Search jobs on Dr. Dobb's TechCareers
Function:

Keyword(s):

State:  
  • Post Your Resume
  • Employers Area
  • News & Features
  • Blogs & Forums
  • Career Resources

    Browse By:
    Location | Employer | City
  • Most Recent Posts:



    MICROSITES
    FEATURED TOPIC

    ADDITIONAL TOPICS

    INFO-LINK



     
    ♦ sponsored




    Related Sites: DotNetJunkies, SD Expo, SqlJunkies