Skip to main content

Posts

Showing posts from September, 2009

C++ Development Environment

Trolling through some forums today, I found some great resources for C++, so I expanded on it and inserted some annotations.

Categories are Integrated Development Environment (IDE), UML Interface, Team Collaboration, Coding Standards, Bug Tracking, Version Control, Unit Test Library, and Performance Testing. A bracket sits next to the resource which contains a W for Windows support, L for Linux, and M for Mac. A $ indicates that a standard version of the software will require a purchased license.

IDE:

Eclipse CDT (eclipse.org) [WLM]
Visual SlickEdit (slickedit.com) [WLM$]


UML:

Eclipse MDT (eclipse.org) [WLM]


Team Collaboration:

Skype [WLM]
Zoho [WLM]
Sharepoint [W$]
SourceForge [WLM]


Coding Standards (Platform Agnostic):

The Lockheed Martin Joint Strike Fighter C++ coding standards (att.com)
The MISRA C++ coding standards [$] (misra-cpp.org)


Bug Tracking:

Bugzilla (bugzilla.org) [WLM]
Unfuddle (unfuddle.com) [WLM]


Version Control:

mercurial
subversion
mercurial
git
cvs


Version Control Gui:

Tortoise (tigris.…

The C++ Standard Library: First 8 Sections

"At some point you have to stop introducing features and focus on the details. Otherwise, you never finish the work."
- Nicolai Josuttis

Key points throughout these sections:
- The C++ standard template library containers were designed with value semantics in mind. It is also not possible to store auto_ptrs in the containers due to the effect of the assignment operator. For reference semantics, the Boost pointer array should come in handy.
- The STL was also designed for performance rather than safety. There are some containers that throw exceptions, but not many. The burden of safety falls on the code that uses the STL.
- There are sequential containers and associative containers. Which container to use depends on the behavior of the software because containers behavior differently.
- Associative containers are represented internally by binary (Red-Black) trees.
- Container traversal must be done through iterators. Iterators have their own hierarchy of traits: input, …