$B$U$H!"(Bsort_by $B$G%F%s%]%i%j%*%V%8%’%/%H$r8:$i$9J}K!$r;W$$$D$$$F!"(B
$B$d$C$F$_$?$i(B (r30439) $B9bB.2=$7$F$h$+$C$?$N$G$9$,!"(B
$B$=$NCf$GG[Ns$N:G8e$N$[$&$r@Z$jMn$H$94X?t$,8+Ev$?$i$J$/$F!"(B
$BG[Ns$NCf?H(B (RARRAY_EMBED_FLAG) $B$K%"%/%;%9$9$kI,MW$,$"$j$^$7$?!#(B
$BD9$5$rJQ$($k$N$OG[Ns$KBP$9$k4pK\E*$JA`:n$J5$$,$9$k$s$G$9$,!"(B
$B$J$s$G$J$$$s$G$7$?$C$1(B? $B8+Mn$H$7$F$k(B?
$B$`$i$?$G$9!#(B
2010$BG/(B12$B7n(B31$BF|(B18:55 Tanaka A. [email protected] :
$BD9$5$rJQ$($k$N$OG[Ns$KBP$9$k4pK\E*$JA`:n$J5$$,$9$k$s$G$9$,!"(B
$B$J$s$G$J$$$s$G$7$?$C$1(B? $B8+Mn$H$7$F$k(B?
ary_resize_capa $B$O0c$$$^$9$+!)(B
–
Kenta M.
OpenPGP FP = 1D69 ADDE 081C 9CC2 2E54 98C1 CEFE 8AFB 6081 B062
$BK$r=q$-$^$7$?(B!!
$B!X(BRuby $B5U0z$-%l%7%T!Y(B
Amazonで島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威のRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)。アマゾンならポイント還元本が多数。島田 浩二, 設樂 洋爾, 村田 賢太, 前田 智樹, 谷口 文威作品ほか、お急ぎ便対象商品は当日お届けも可能。またRuby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)もアマゾン配送商品なら通常配送無料。
E-mail: [email protected]
twitter: http://twitter.com/mrkn/
blog: ドレッシングのような
2010$BG/(B12$B7n(B31$BF|(B21:36 Kenta M. [email protected] :
$BD9$5$rJQ$($k$N$OG[Ns$KBP$9$k4pK\E*$JA`:n$J5$$,$9$k$s$G$9$,!"(B
$B$J$s$G$J$$$s$G$7$?$C$1(B? $B8+Mn$H$7$F$k(B?
ary_resize_capa $B$O0c$$$^$9$+!)(B
sort_by $B$,Dj5A$5$l$F$$$k(B enum.c $B$G;H$$$?$$$N$G$9!#(B
$B$G$b(B ary_resize_capa $B$O(B array.c $B$G$7$+;H$($J$$$N$G$9!#(B
$B$J$+$@$G$9!#(B
At Fri, 31 Dec 2010 18:55:19 +0900,
Tanaka A. wrote in [ruby-dev:42912]:
$B$U$H!"(Bsort_by $B$G%F%s%]%i%j%*%V%8%’%/%H$r8:$i$9J}K!$r;W$$$D$$$F!"(B
$B$d$C$F$_$?$i(B (r30439) $B9bB.2=$7$F$h$+$C$?$N$G$9$,!"(B
$B$=$NCf$GG[Ns$N:G8e$N$[$&$r@Z$jMn$H$94X?t$,8+Ev$?$i$J$/$F!"(B
$BG[Ns$NCf?H(B (RARRAY_EMBED_FLAG) $B$K%"%/%;%9$9$kI,MW$,$"$j$^$7$?!#(B
$BD9$5$rJQ$($k$N$OG[Ns$KBP$9$k4pK\E*$JA`:n$J5$$,$9$k$s$G$9$,!"(B
$B$J$s$G$J$$$s$G$7$?$C$1(B? $B8+Mn$H$7$F$k(B?
$B$"$C$?$h$&$J5$$,$7$?$s$G$9$,$J$$$G$9$M$’!#(B
Index: include/ruby/intern.h
— include/ruby/intern.h (revision 30444)
+++ include/ruby/intern.h (working copy)
@@ -83,6 +83,7 @@
VALUE rb_ary_cmp(VALUE, VALUE);
VALUE rb_ary_replace(VALUE copy, VALUE orig);
VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE()(VALUE,long));
+VALUE rb_ary_resize(VALUE ary, long len);
/ bignum.c */
VALUE rb_big_new(long, int);
int rb_bigzero_p(VALUE x);
Index: array.c
— array.c (revision 30444)
+++ array.c (working copy)
@@ -1308,6 +1308,43 @@
}
}
+VALUE
+rb_ary_resize(VALUE ary, long len)
+{
long olen;
VALUE *ptr;
rb_ary_modify(ary);
olen = RARRAY_LEN(ary);
if (len == olen) return ary;
if (len > ARY_MAX_SIZE) {
rb_raise(rb_eIndexError, “index %ld too big”, len);
}
if (len > olen) {
if (len >= ARY_CAPA(ary)) {
ary_double_capa(ary, len);
}
rb_mem_clear(RARRAY_PTR(ary) + olen, len - olen);
ARY_SET_HEAP_LEN(ary, len);
}
else if (ARY_EMBED_P(ary)) {
ARY_SET_EMBED_LEN(ary, len);
}
else if (len <= RARRAY_EMBED_LEN_MAX) {
VALUE tmp[RARRAY_EMBED_LEN_MAX];
memcpy(tmp, ARY_HEAP_PTR(ary), ARY_HEAP_LEN(ary));
ary_discard(ary);
memcpy(ARY_EMBED_PTR(ary), tmp, len);
ARY_SET_EMBED_LEN(ary, len);
}
else {
if (olen > len + ARY_DEFAULT_SIZE) {
REALLOC_N(RARRAY(ary)->as.heap.ptr, VALUE, len);
}
ARY_SET_HEAP_LEN(ary, len);
}
return ary;
+}
/*
call-seq:
ary[index] = obj -> obj
$B$^$D$b$H(B $B$f$-$R$m$G$9(B
In message “Re: [ruby-dev:42917] Re: cut off an array at C level”
on Sat, 1 Jan 2011 11:08:52 +0900, Nobuyoshi N.
[email protected] writes:
|
|$B$J$+$@$G$9!#(B
|
|At Fri, 31 Dec 2010 18:55:19 +0900,
|Tanaka A. wrote in [ruby-dev:42912]:
|> $B$U$H!“(Bsort_by $B$G%F%s%]%i%j%%V%8%'%/%H$r8:$i$9J}K!$r;W$$$D$$$F!“(B
|> $B$d$C$F$_$?$i(B (r30439) $B9bB.2=$7$F$h$+$C$?$N$G$9$,!”(B
|> $B$=$NCf$GG[Ns$N:G8e$N$[$&$r@Z$jMn$H$94X?t$,8+Ev$?$i$J$/$F!“(B
|> $BG[Ns$NCf?H(B (RARRAY_EMBED_FLAG) $B$K%”%/%;%9$9$kI,MW$,$"$j$^$7$?!#(B
|>
|> $BD9$5$rJQ$($k$N$OG[Ns$KBP$9$k4pK\E $JA`:n$J5$$,$9$k$s$G$9$,!”(B
|> $B$J$s$G$J$$$s$G$7$?$C$1(B? $B8+Mn$H$7$F$k(B?
|
|$B$"$C$?$h$&$J5$$,$7$?$s$G$9$,$J$$$G$9$M$'!#(B
$B$$$$$s$8$c$J$$$G$7$g$&$+!#(B