2012年4月6日金曜日

C++ : イテレーターとか、テンプレートとか 1

Pythonのスピードについての話しから
イテレータと言う話題が出た

oyagさんから、覚えていた方が良いよと言われた事は覚えてるw

※いい加減なブログな自覚はあります。
 間違ってたら指摘してくださるとうれしいです。


イテレータ

反復処理の為に存在
動的配列 Vector の先頭要素から、順番に行う処理を、list,mapに対しても同等に扱える。


list, mapは構造的に違うらしいが。同じ扱いが出来る。
この同じ扱いを"抽象化"という。らしいw


うぬぬぬ、さっぱり前提がわからんwww
要は何が入ってるかワカラン要素をひとつづつ、呼び出して処理してるもんか?
海賊の死刑みたいなもんかね

リスト構造に対して順番に処理をする。
とのヒントを頂いたのですが。

C++のリスト構造を理解してません(アヒャ

リスト構造

リスト構造って変数の後ろに次のポインタが記載されてるもの。
要は行き先が書いてある

最後の要素が最初を指せば、循環リスト構造になり
コレが前後だと、双方向になる。

欠点としては、読み込まないと次がわからないし。
一度終わらないと、総数がわかんない所かな?
速度も配列よりは遅かった気がする

たしか、間に入れたりするのは、配列よりも手間が少ないとの話しだった。
Pythonの何でも入れられるリストと言うのは、コレなんだろうな

ようは、次がわかれば良いので、型に依存しないってことですね

あれ?循環リストの総数ってどうするんだろ


標準ライブラリー

イテレータは標準ライブラリーにあるらしい。

標準ライブラリー・・・機能拡張みたいなもんと認識


template

前段で覚えておいた方が良い物として、テンプレートなる物があるらしい。
非常に便利との言葉を聞くので、調べてみる

・・・。簡潔にまとめると、型に依存する事の無い 関数、Class、引数らしい。

型に依存する事の無いテンプレートという型を作って処理するみたい。
なんだかスゴいもんである

説明から、コンパイル時に適切な型に自動で変更してくれるらしい。
あ、そうなんですか。

どのくらいメモリを確保するんだろうとか、思ってたけど。
それは特に型指定と変わらないのね

コード自体は型を気にする事無くがんがん記述して、
面倒な事はコンパイルさんにしてもらうってことですな。

SoftimageのSDKライブラリに用意されているCValueとか、そうなのかも


Softimageに用意されてるCRefArrayとか、
最初に要素数を指定する事が無かったりして、
スピードとか、メモリ確保とかどうなのかわからなかったけど、
このテンプレートを使ってるかもしれないなぁ。
わかんないけどね


というわけで、イテレータまでたどり着けてません orz

0 件のコメント:

コメントを投稿