performance improve

Do these things

* use `auto&` instead of `auto` if possible
* correct some coding style
* initialize an object in constructor to remove unneeded assign operation
* remove unneeded temple object
in my opinion, "child" is a pointer, a raw data, there is no need to use &.