e$B@.@%$G$9!#e(B
Yukihiro M. wrote:
e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B
e$B<+J,$GJY6/$9$k$Y$-$J$N$+$b$7$l$^$;$s$,!“:G6a$Ne(BC++e$B;v>p$K$OABe(B
e$B$$$N$Ge(B(e$B;d$,e(BC++e$B%W%m%0%i%^$@$C$?$N$Oe(B10e$BG/0J>eA0e(B)e$B!”!Ve(BC++ e$B$K$*$1e(B
e$B$ke(B Iteratore$B!W$H$$$&$N$Oe(BInput Iteratore$B$He(BRandom Access
Iteratore$B$NB>$K$b$$$m$$$m$"$k$s$G$9$+$M!#e(B
e$B$“!”;2>H$rD%$m$&$H;W$C$FK:$l$F$$$^$7$?!#e(B
http://www.kuzbass.ru/docs/isocpp/lib-iterators.html
e$B?^$K$9$k$H0J2<$NDL$j!"e(B
Random access → Bidirectional → Forward → Input
→ Output
e$B$=$l$>$l0J2<$N$h$&$K$J$j$^$9!#e(B
Input: e$BF~NO$N$_0lJ}8~%7!<%1%s%7%c%ke(B
Output: e$B=PNO$N$_0lJ}8~%7!<%1%s%7%c%ke(B
Forward: e$BF~=PNO0lJ}8~%7!<%1%s%7%c%ke(B
Bidirectional: e$BF~=PNOAPJ}8~%7!<%1%s%7%c%ke(B
Random access: e$BF~=PNO%i%s%@%`%"%/%;%9e(B
e$B$A$J$_$K!"e(Bboost e$B$@$H$A$g$C$HJQ$o$C$F!"e(B
Incrementable → Single Pass → Forward Traversal
→ Bidirectional Traversal → Random Access Traversal
http://www.boost.org/libs/iterator/doc/new-iter-concepts.html
e$B$H$J$C$F$$$^$9$,!"6hJL$NK<A$OF1$8$G$9$M!#e(B
|* e$B$@$+$i!“!VG[NsE*%a%=%C%I!W$rHw$($?e(B Enumeratore$B!“e(B
|e$B!!$D$^$je(B Indexer e$B$,M_$7$$!#e(B
|* e$B$J$!"!VG[NsE%a%=%C%I!W$N%-%b$Oe(B [], []=, length e$B$G$”$j!“e(B
|e$B!!$3$l$i$,<BAu$5$l$F$$$l$P!”$”$H$O$=$l$rMQ$$$F<BAu$G$-$ke(B
|e$B$H$$$&$3$H$,8@$$$?$+$C$?$N$G$9!#e(B
e$B$&!<$s!“e(Blengthe$B$,I,?$G$”$k$J$i$PG[Ns$K$7$F$7$^$C$F$$$1$J$$M}e(B
e$BM3$,$"$^$j;W$$$D$+$J$$$N$G$9$,!#%a%b%j8zN(!)e(B
e$B$^$:!"%a%b%j8zN($H<B9T8zN(N>J}$G$9!#$3$l$Oe(B String.bytes
e$B$,JV$9e(B Indexer
e$B$N>l9g$,$$$$Nc$+$H!#e(B
e$B<!$K!“<BBN$r0l$D$K$7$?$$$H$$$&%1!<%9$G$9!#$3$l$be(B String.bytes
e$B$NNc$G$9e(B
e$B$,!”$3$l$,@0?tNs$rJV$9>l9g!"$3$l$K$?$$$7$F=q$-9~$_$r9T$C$F$b85$Ne(B
String
e$B$,JQ99$5$l$^$;$s!#e(B
e$B2C$($F!"FH<+$N%a%=%C%I$rDI2C$7$?$$>l9g$G$9!#e(BArray
e$B$N%$%s%9%?%s%9$KFC0[%ae(B
e$B%=%C%I$r;H$&J}K!$OLLE]$G$9$7!“e(BArray e$B$r7Q>5$7$?>l9g$Oe(B []
e$B$r:FDj5A$7$F$be(B
first e$B$,0MB8$7$F$$$J$$$N$G$3$l$b;H$($^$;$s!#FH<+%/%i%9$Ke(B Indexable
e$B$re(B
include e$B$9$kJ}K!$J$i$P!”$3$l$b$9$C$-$j$7$^$9!#e(B
lengthe$B$,$J$$$J$i$Pe(BLazye$B$Je(BList e$B$,:n$l$k$H$$$&M}M3$,;W$$$D$/$N$G$9$,!#e(B
Requirements e$B$K$D$$$F$O5DO@$NM>CO$,$"$kE@$@$H;W$C$F$$$^$9!#:#2se(B
length
e$B$r2C$($?$N$Oe(B String.bytes
e$B$,JV$9$b$N$KBP$7$F$N:NMQ$r4|BT$7$F$$$k$+$i$G!"e(B
e$B$=$N$?$a$Ke(B length e$B$,I,MW$K$J$j$^$7$?!#e(B
length e$B$de(B []= e$B$N$J$$e(B Indexer
e$B$H$$$&$N$bB8:$7$&$k$H;W$C$F$$$^$9$,!"$^$:e(B
e$B$OL\2<M$7$$e(B String.bytes e$B$KI,MW$J%a%=%C%I$H$7$F!"e(B[], []=,
length e$B$r5s$2e(B
e$B$^$7$?!#e(B
e$B$b$&$A$g$C$H$$$m$$$m5DO@$7$J$$$H!"$J$<e(BRandom Access Iterator
e$B$,I,MW$J$N$+8+$($F$-$^$;$s!#e(B
e$BL\2<$N<gD%$H$7$F$O!"e(B[ruby-dev:33447] e$B$Ne(B
e$B$&!<$s!“$I$&$7$h$&$+$J$”!#@lMQ%/%i%92=$7$?J}$,@-G=$,>e$,$k$He(B
e$B$+$$$$$3$H$b$“$k$s$G$9$,$M$(!#$G$b!“e(Bbytee$B%”%/%;%9$He(Bbytee$BNs5s;Re(B
e$B$rF10l;k$9$k$3$H$K$J$s$H$J$/Dq9346$,$”$j$^$9!#e(B
e$B$K$D$$$F$G!“!Ve(Bbytee$B%”%/%;%9$Oe(Bbytee$BNs5s;R$N1dD9$K$“$k!W$H$$$&$b$N$G$9!#e(B
String.bytes.each{|x| p x}
String.bytes[idx]
String.bytes[idx]=
e$B$O$=$l$>$l<+A3$J$b$N$G$”$k$H$$$&$N$,Bh0l$N<gD%$G$9!#e(B
e$B$h$C$Fe(B String.bytes e$B$Oe(B Random Access Iterator
e$B$rJV$9$Y$-$H$$$&$N$,BhFs!#e(B
e$B$=$l$re(B Enumerator e$B$K$D$C$3$`$N$O$5$9$,$K0c$$$9$.$k$@$m$&$+$ie(B
Indexer e$B$He(B
e$B$$$&JL$N$b$N$K$7$h$&!#e(B
e$BB>$N%*%V%8%'%/%H$K$b;H$($k$@$m$&$+$ie(B Indexable
e$B$b$"$k$H$$$$$M!#e(B
e$B$H$3$m$G!“e(BString.bytes e$BA0Ds$@$He(B length e$B$,I,MW$@$M!#e(B
e$B$H$J$C$F!”:#$K;j$k$H$$$&46$8$G$7$g$&$+!#e(B