CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、PC関係、プログラミング、国内海外旅行情報など何でもござれ。@caddiary

ソフト開発

イテレータ(Iterator)

投稿日:

あるコンポーネントで初めて出会いました。コンポーネントがバージョンアップされたときに、オブジェクト指向的な作りに一新されて、いろいろ変わったのですが中でもイテレータという訳の分からないものに遭遇して、戸惑った覚えがあります。例を挙げるとこんな感じです。(VC++)

OdDbObjectIteratorPtr pIter = pBtr->newIterator();

for( ; !pIter->done(); pIter->step() )

{

OdDbEntityPtr pEnt = pIter->objectId().safeOpenObject();



}

別になんてことのないforループですけど...

「プログラミングにおいてイテレータとは、リストや、それに類似するデータ構造の、各々の要素に対し繰り返し処理の抽象化したものである。実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。反復するためのものの意味で反復子と訳される。」(ウィキペディアより引用)

オブジェクト内に反復処理を保持しているということが特徴です。また、繰り返しの途中の状態を保存しておいて、あとで再開することが可能です。オブジェクト指向がわからないとプログラマーとしては未熟だと言われてしまう今の時代、重要なキーワードになるでしょう。

前述のコンポーネントの話ですが、そのバージョンアップには正直ビビリました。構造体と関数で作り込まれていたものが、ほとんど全部クラスになったのです。CがC++になったということです。それまで、クラスを使ったことがほとんどなくて、初めて本格的にクラスに触れた機会でした。今でも完全にマスターしたわけではありませんが、そこそこ解ってきたつもりです。

その時に同様に初めてみたものに「スマートポインタ」というものもあります。いつか機会があれば、これについて書いてみたいと思います。

forループで思い出しましたが、whileループが嫌いです。永久ループになりやすいので。きっちりと回数を決めてループさせるのが、精神衛生上好ましいです。どうしても使わなければならない場合もあるので、その場合はきっちりとbreak条件を設定します。永久ループは致命的なバグになります。過去に何度か、痛い目を見ました。whileは要注意です。

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

VisualStudio2005

帰国後の1週間を乗り切った。 バカンスモードの体からビジネスモードに切り替えるのは、 なかなか厳しかったが、この1週間で徐々に慣れてきた。 夢のような南国リゾートとは違い、現実世界は厳しい。 さて、V …

PDFiumはPDFからテキスト抽出するのもちょー簡単

PDFiumを語るのに日本語はいらない。プログラマーはプログラム言語で語る。PDFiumの処理は、tryとfinallyのところだけを見てくれればよい。たったこれだけでPDFからテキストを抽出できるの …

マルチスレッドプログラミング(C++編)

マルチスレッドプログラミング(VB.net編) マルチスレッドプログラミング(C#編) もあるので、ご覧あれ。 5秒以上の時間を要する処理をやらせていると応答なしになってかっこ悪い、なんてことをアラフ …

no image

受託開発

パッケージソフトの開発にメンバーとして関わって10年、そこそこの売り上げを継続でき、よい結果を出していると思います。ここ最近、少しジリ貧なので、ちょっと厳しいですけど、それはともかく... 近頃、受託 …

no image

PDF印刷のアプリ指定

PCにAdobe ReaderとAcrobatの両方が入っている場合、PDFファイルを 右クリックメニューから印刷ってやると、どっちで印刷されるのか? Windows XPまでは、拡張子の関連付けのと …