週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

よくわかりません。ちょっと調べてみましたが。

正直boost::mpl::vectorの構造は非常に簡単だと思っていました。vector20.hppがあることから考えて、プリプロセッサががんばってvector20用のコードを自動生成していると思っていました。しかしvectorに要素が100以上入ることを考えるとそれはちょっと考え直さないといけません。

斜め読みしたところ、boost/mpl/vector/aux_/item.hppがそのためのコードに見えます。v_item::item_が、long_<index_>を受け取って格納されている型を返す関数として定義されています。この返り値を__typeof__で取得すればよい、と。そしてデータの更新は継承で行うかんじでしょうか。at.hppはそうですし、push_backpush_frontはitem.hppのコードを呼び出すだけで簡単に定義されています。

ところで、pop_backpop_frontではコンテナの長さを減らすだけでなく、item_(long_<なくなった要素>)がvoidを返すようにさらに上書きしています。これまたitem.hppのコードを呼んでいるだけですが。要素を取り除くためにも、さらに継承をつかっているようです。これはつまり、vectorにpush_backとpop_backを繰り返すと、要素が殆どないのに継承チェーンを辿りまくってアクセスに非常に時間のかかるvectorができるということでしょうか?

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/459-bbbb86e1
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。