- use memset rather than fill_n