2019-05-01から1ヶ月間の記事一覧

C++のrange-based forで複数のコンテナをイテレーションする

C++は健康に良い。C++11で導入されたrange-based forが腱鞘炎の治療に役立つことは世界のどこに行っても変わらない普遍的な事実だ。だが、関節に優しいC++のrange-based forでも出来ないことがある。複数のコンテナのイテレーションだ。これだけは素直にwhil…

大学生でもわかる!双方向連結リストの実装!

Twitterを見る限り大学2年では双方向リストの実装を課題として課されることが多いようだ。もちろん弊学もその課題がある。ご学友がイテレータやリストへの要素の削除などで苦労していた。別に難しいことはないのでリストの実装を書く。 リストというデータ構…

大学でフィボナッチ数列の第N項を求める課題が出たが再帰は遅いので速くする

フィボナッチ数列はループで書くより再帰で書いた方が書きやすい。ループではプログラマーが意識して変数を3つほど宣言する必要があるが、再帰で書けば変数は要らない。ただ、再帰には以下のような極めて致命的な問題がある。 まず再帰は関数呼び出しなので…

イテレータを作る回

STLのコンテナを操作するための共通の手段としてiteratorというものがある。とても便利なこのiteratorを自分で実装したことはあるだろうか。iteratorの要件は規格書に書いてあるので、それさえ満たせばどんなイテレータもiteratorを名乗っていいことになる。…