CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、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

Breaker

以前、Layout Breakerという名前のソフトを作ろうと考えていました。レイアウトはともかく、ブレーカー、つまり破壊者です。周囲の反対により、取り下げましたが、個人的にはけっこう気に入っていて、 …

no image

PDF印刷のアプリ指定

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

no image

暗号

こんな本を買った。 『RSA 暗号技術の基礎からC++による実装まで』 ソフトの認証を行うのに、シリアル番号とパスワードを使いたいから。 シリアルは、一定の桁数のランダムな数値とする。 パスワードは、 …

no image

C言語

遡ること10数年、初めて学んだコンピュータ言語がC言語でした。以来、ずっとやってます。机の上には本が一冊。 「実習C言語」(アスキー・ラーニングシステム) この本の画像を探してみましたが、古いだけにみ …

AutoCADのクリッピング情報を語る

AutoCADのクリッピング情報は様々あって、代表的なものとしてレイアウトのビューポート枠によってモデルの絵をクリッピングするというのがある。モデルをのぞき込む窓がビーポートであって、そいつにはレンズ …