領域を固定パターンで埋める memfill

ある値で int 配列を埋めたい、構造体配列を初期化したい、なんて要求はざらにあるような気がするのだけれど、標準ライブラリーにはいってないのはなぜなんだぜ?
見たとおり、速度は O(log nmemb)。

void* memfill(void *ptr, const void *data, size_t size, size_t nmemb) {
  char *const head = ptr;
  if (nmemb > 0) {
    size_t n;
    memcpy(head, data, size);
    for (n = 1; 2*n < nmemb; n *= 2)
      memcpy(head + n * size, head, n * size);
    memcpy(head + n * size, head, (nmemb - n) * size);
  }
  return head + size * nmemb;
}

戻り値は埋めたメモリー領域の末尾のひとつ向こう。続けて操作をしたいときだとかに便利だし、あと STL の標準アルゴリズムを真似したいというのがあってだね。