====
lists, hashes, maps, graphs, in the context
of algorithms and data structures, accompanied by stdout
unit tests.
Learner's implementations under the Lehr
namespace.
For me, C++ is a difficult language and trying to learn it is like attacking Bruce Lee in a movie:
you get a real beating, in this case delivered using
dangling pointers, segfaults, the multi-talented const
keyword, type deduction,
templates and their meta-programming, and incredibly long g++ error messages.
Issues: https://github.com/kuhe/cpp-Lehr/issues
Todo
BRTRee, BST balancing
What's new in C++14?
What's new in C++17?
Horizon
see 23.2 Container Requirements, refactor to meet requirements
Currently implemented (approximate corresponding Java/C++ library class):
LinkedList (LinkedList/forward_list)
ArrayList (ArrayList/vector)
+ Mergesort (virtual)
Map (HashMap/unordered_map)
Set (HashSet/unordered_set)
Graph (?/?)
+ Dijkstra & A*
BinarySearchTree (TreeMap/map)
FenwickTree (?/?)
BinaryHeap (PriorityQueue/priority_queue)
UniquePointer (?/unique_ptr)
SharedPointer (?/shared_ptr)
I'll try, unsuccessfully, to follow these guidelines:
- namespace Lehr for my implementations
- types as title case, methods/variables with underscores
- constant reference method parameters
- restrict raw pointer usage outside of data structure implementations
- Limit OO terms in type names (e.g.
List
instead ofIList
orListInterface
orAbstractList
) - member order: public, protected, private
namespace Lehr {
class MyCoolClass {
public:
int my_cool_method(const int& input);
private:
bool blah;
}
}