Channels ▼
RSS

.NET

The C5 Generic Collection Library

Source Code Accompanies This Article. Download It Now.


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.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video