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

PDFiumでPDFを描画したりなんだりできるんだとさ

まずはこちらのネットニュースをご覧あれ。2014年に書かれたものでおもしろいことが書いてある。

no image

VC2015のプロジェクトを久しぶりにビルドしたらエラーになったけど。。

エラーはこんな感じ。

no image

軌道に乗ったか!?

 この11月の売り上げ本数が、10本の大台にのりました。私が最も力を入れているCAD関連ツールがです。喜ばしいことです。関係各位への感謝がつのります。  思えば半年前、あるユーザーの要望から始まったこ …

PDFiumでPDFを描画してみたけど、こんなに簡単にできちゃっていいのかよ!

PDFiumで画像化とテキスト抽出が容易にできることは前回まででわかっていたので、今回は描画に取り組んでみた。

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …