| 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 | |