rapidxml快速有以下原因:
1)使用memory pool分配及释放内存。rapidxml默认每次申请64K的空间,如果当前pool中的空间不足,则会以64K空间的大小逐步增加。试想,连续申请16000次每次申请4个字节,和申请一次64K,之间谁的时间短?当然是一次时间短。
2)避免多余的字符串拷贝。无疑,字符串拷贝是非常耗时的,rapidxml为了追求rapid的特点,在内部拷贝时都只使用浅拷贝(与深拷贝相对:只是拷贝指针的值,而不是拷贝指针指向的内容)。不过也由此,使用者在保存xml文件时,需要注意一点:当将rapid写入到内存之前,应保证浅拷贝时指针指向的内容没有发生改变。否则,你会发现保存的文件内容都是错误的值。
rapidxml.hpp:
只要文件 实现内存池 解析string 异常处理
xml_base 基数节点类
xml_attribute 文本类
xml_node 节点类
xml_document 文档类
rapidxml_iterators.hpp:
提供两个迭代器类:node_iterator, attribute_iterator
rapidxml_print.hpp:
提供跟字符串,流对象的装换函数
rapidxml_utils.hpp:
提供一个file用来读取文件使用
跟两个计数函数 count_children,count_attributes