I’d like to have guide for C++ programmers who wants to learn Ruby.
This guide should explain how to do things in Ruby they used to do in
C++, STL.
STL has container map which allows us to do the following
insert(key,value)
find_by_key(key)
delete_by_key(key)
min_by_key()
max_by_key()
extract_min_by_key()
extract_max_by_key()
running O(log N) each (N - number of elements in container)
So map could acts as associative array, and as priority queue as well.
Simple use case: find M most frequent words in big text of size N in
time O( N * log(M) ) or faster.
I don’t know how to solve this problem in Ruby using only standard
classes and not using gems (PriorityQueue) and not writing data
structures (RB-trees, or binary heap, or …) by myself.
Is it possible?
What do you think about
implementing Hash as RB-tree and adding methods :first and :last
returning min and max pair by key
adding new class PriorityQueue to standard library
adding new class SearchTree to standard library, which allows to do
all that map does
?