|
本帖最后由 weixing1531 于 2019-9-23 10:52 编辑
本模块在GitHub上大牛Robert Rüger项目Fortran Template Library (FTL)的基础上进行了如下修改:
1.用无限多态class(*)代替预处理宏进行通用类型操作
2.ftlList类增加了Set, Get, Change, WriteList, EraseVal, InsertVal, FindIt, GetFront, GetBack等实例方法,并将实例变量front, back设为私有
3.ftlListIterator类增加了GetValue实例方法,并将实例变量value设为私有
4.增加了模块方法WriteNode
程序使用范例
[Fortran] 纯文本查看 复制代码 06 | type ( ftlListIterator ) :: it |
09 | character ( len = : ) , allocatable :: c |
11 | call o % New ( [ 5 , 13 , 41 , 97 , 17 , 10 , 88 ] ) |
15 | call o % PushBack ( "123" ) |
18 | select type ( p = > o % GetBack ( ) ) |
25 | call WriteNode ( o % PopBack ( ) , "Node" ) |
27 | call o % PushFront ( 0.123 ) |
30 | select type ( p = > o % GetFront ( ) ) |
37 | call WriteNode ( o % PopFront ( ) , "Node" ) |
45 | call WriteNode ( o % Get ( 6 ) , "Node" ) |
47 | select type ( p = > o % Get ( 6 ) ) |
58 | call WriteNode ( it % GetValue ( ) , "Node" ) |
67 | call WriteNode ( it % GetValue ( ) , "Node" ) |
双向循环链表源代码
ftlListModTest.F90
(27.28 KB, 下载次数: 4)
当然也有无限多态单向循环链表,少了前指针,无法使用PopBack方法。
单向循环链表源代码
ftlSingleListModTest.F90
(27.52 KB, 下载次数: 6)
总结:目前Fortran无限多态class(*)也能实现C++一部分模板功能,但有很多限制。
|
|