template class ring<T> and ring_stack<T>

+ utl::ring<T> 是一个环形数组，
+ utl::ring_stack<T>是一个环形堆栈，在当前大小下 N，压入新元素时如果栈已满则将该元素至于栈中的一个元素，也就是说在栈满时
utl::ring_stack<T> 永远仅保存最新的 N 个元素，这种数据结构在 redo/undo 动作的实现中被广泛引用
utl::sparse_matrix<T>

基于 std::map<std::pair<int, int>,  T> 实现以快速随机修改，可导出为稀疏矩阵表，计划将其与 ARPACK
挂接实现稀疏矩阵的运算。
TODO：是否应该在 utl::sparse_matrix<T> 中始终维护一个稀疏矩阵表，并设置一个 bool
量来标志该表是否需要重建，这样在调用返回稀疏矩阵表的函数时检查是否需要重建，如果需要才重建该表，通过这种方法来减少运算中的临时稀疏矩阵表对象？