| | 284 | == Boost.Devector == |
| | 285 | |
| | 286 | The purpose of this project would be to write a super-efficient alternative to std::deque, named boost::devector. |
| | 287 | As the name suggest, this would be something of a mixture between std::deque and std::vector, bringing the best of |
| | 288 | them both together. |
| | 289 | |
| | 290 | One of the prime uses of std::deque is with intrusive containers, whether are home-made or based on |
| | 291 | Boost.Intrusive ([http://www.boost.org/doc/libs/1_38_0/doc/html/intrusive.html]). The property that is |
| | 292 | so imporant here is reference stability (when the container grows, references are not invalidated). |
| | 293 | |
| | 294 | The exsting std::deque has a number of short-comings that should be solved for this container: |
| | 295 | |
| | 296 | * slow iteration (see e.g. [http://lafstern.org/matt/segmented.pdf]) |
| | 297 | * inability to specify the size of the chunk and/or change them at runtime |
| | 298 | * inability to reserve chunks of memory in advance (at both ends) |
| | 299 | * overencapsulated for certain low-level operations. |
| | 300 | |
| | 301 | Writing such a container is non-trivial, but you will learn to master the following |
| | 302 | important topics |
| | 303 | |
| | 304 | * generic programming in C++ |
| | 305 | * low-level C++ development |
| | 306 | * the use of Boost.Iterator ([http://www.boost.org/doc/libs/1_38_0/libs/iterator/doc/index.html]) |
| | 307 | * the use of Boost.TypeTraits ([http://www.boost.org/doc/libs/1_38_0/libs/type_traits/doc/html/index.html]) |
| | 308 | |
| | 309 | Futhermore, you will learn to write canonical exception-safe code which is something that |
| | 310 | you can make use of no matter what language you will be using in the future. You will also |
| | 311 | learn to write rigorous tests. And you will learn how to write precise and clear documentation at a level |
| | 312 | suitable for an expert. All of these abilities should be very useful for you in your future career. |
| | 313 | |
| | 314 | If there is more time, we can look at additional advanced data-structures. |
| | 315 | |
| | 316 | -Thorsten |
| | 317 | |