AVL Array is an STL-like container for C++ that fills the gap between vector (or deque) and list, providing both fast random access and fast insertion/removal, all O(log n). This is not a map; in an avl_array, the "keys" always range from 0 to size-1, and they automatically change on insertion or removal. As a sequence container, like vector and list, it respects the order of elements.
Sudoku Sensei is not a Sudoku solver, but an "explainer". It can list the logical steps taken. It can generate new Sudokus and rank their difficulty. It supports not only 9x9 grids, but MxN, samurai, or any layout you can describe with the board editor. It has a GUI, manual, tutorial, and examples.