NSTL
Non-Standard Template Library
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.