Data Abstraction and Problem Solving with Walls & Mirrors provides a firm foundation in data abstraction that emphasizes the distinction between specifications and implementation as the basis for an object-oriented approach. Software engineering principles and concepts as well as UML diagrams are used to enhance student understanding.
This is my first attempt of delving into algorithms and data structures, so I can't compare this book with others, but I'm confident to say that this book is really necessary for C++ programmers who happen to miss algorithm skills like I did. It gently steps through all the essentials without ever boring the reader, then implements basic data structures and explains all the details comprehensively. I'm happy I picked this book as my first algorithms book, because author did a great job in introducing algorithms and data structures in modern C++. However, reader should not expect to understand all the algorithms available or even get know the best C++ implementations of them in this book. Surely you will need to heavily rely on containers and algorithms in Standard Template Library and connect them with whatever you learned in this book. Only then you will be able to understand the underlying details of STL containers and why they are the way they are. Thank you for this great work Frank.