NSTL

Non-Standard Template Library



SourceForge.net Logo


What is NSTL?
Current Development.
Future Plans.
A Final Note.
Download NSTL.
Thanks to...



What is NSTL?

    The NSTL is a collection of generic contrainers, and algorithms, much like the STL. It is intended to be used in a way similar to the STL. The NSTL was made in a way, keeping with the STL framework, and in intended to extend it. Except for where mentioned, all containers, and algorithms can be freely exchanged with the STL containers and algorithms. Even where the complexity guarentees are concerned, NSTL will mention explictly what the guaranteed running time would be for the operation if it is not obvious from the name of the operation or from the implementation technique. The NSTL will not provide the containers, and algorithms that the STL currently provides, but will try to extend the same concept of generic programming and provide extensions of those containers, or newer containers altogether.



Current Development:

Detailed introduction to NSTL Allocators.

All NSTL containers, algorithms, and allocators will reside in the nstd:: namespace.

    We provide not thread support what so ever(except where mentioned explicitly). Whatever thread support that is there will have to be provided by the client. This is because threads are seen as system dependant, and there are many ways to
do the same thing with threads even on the same platform, so the client can choose the one that most suits him/her. Also, it has been noticed that if we provide thread support, clients more often than no also land up providing mutex protection on their own, so that would reduce the efficieny of the code.



Future Plans:

    NSTL is scheduled to provide containers like auto_vector, auto_list, auto_map, and auto_multimap. The auto_containers are like the auto_ptr in their usage, meaning that they own the seuqence that they hold, and when assigned or copied, actual copying does not take place. Only transfer of ownership takes place.

    Also the persistent storage variety in the form of disk_vector is being thought about. This disk_vector<> would be similar to a normal vector in it's interface except that it would operate on data on the disk instead of in memory.

    In addition, we propose to provide an extra container called flat_deque<>. This container will be similar in all respects to deque<>, except in the implementation, where the actual data will be stored in memory that is contiguous, like the vector<>.



A Final Note:

    The NSTL is still very much in development stage, however, the nstd::allocators are pretty much usable.

    There a quite a few test cases that compare the relative perfromance of the allocators within NSTL as well as that provided by the default STL implementation.



Download NSTL:

    The absolute latest sources can be found only from CVS. The zipped sources may be a few days to a few months old.
The latest version is v0.5, and can be obtained in .zip form from here.

    For CVS access, you can visit: http://www.sf.net/projects/nstl/ . This site supports both Web Based CVS access, as well as anonomous CVS access.

    The NSTL Home Page is at: http://nstl.sf.net/



Thanks to...

    Thanks to Apurva Mehta for his constructive criticism of the NSTL documentation effort. His suggestions have lead to more coherent documentation.

    If anyone sends me any errors that they find, I'll add their Name and (optionally email ID) here.




Dhruv Matani => dhruv_nospam_bird at yahoo dot com
Humans may remove the obvious _nospam_ to send me an email.