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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

PDFに捺印できるようにしたPDFアレコレを公開

半年ぶりにPDFアレコレをバージョンアップ。変更点は以下の通り。 Ver2.01 2020/3/15 ・プレビューからの捺印機能に対応。捺印用データはとりあえずpdfのみで配置点が固定。  ※そのうち …

no image

家で仕事

そもそも家でパソコンを買ったのは、仕事をするためだ。 う~ん、仕事とも言えるけど仕事とも言えない感じがする。 ドスパラのPrime、22万円なり。 結構な投資だったけど、後悔はしてない。 今、そのNe …

no image

簡単インストーラ

インストーラと言えば、Install Shield です。最新バージョンは11.0で価格は44万1千円。高いんです。高機能版(Premier Edition)で、多国語(全33ヶ国語)対応という代物だ …

コマンドラインからパラメータを指定すればテキスト抽出や画像変換ができるPDFアレコレを公開

exeがパラメータを受け取って、GUI操作でできていることをCUI操作でやってやろうじゃないかという企画。以下の記事を書いたのが1週間前。ここまで設計したなら実装しなきゃいかんということで、ヒマな週末 …

クリップボード履歴を一括でまとめて取得したいだろ?

Windows 10 1809の新機能「クリップボード履歴」はそこそこ使えるんだけど、惜しいんだよね。最大25個までのコピーした履歴を取れるところまではよいが、その履歴を一括でまとめて取得できないのだ …