突撃!STL!!ここ最近ぐっと冷え込み、虫の鳴く声もよく聞くようになりました。10月も終わりに近づき、秋らしさを日々実感しちゃいますね。こんにちは、ハラです。Library)について書いてみたいと思います。STLとは、C++の標準ライブラリにも含まれているコンテナとアルゴリズムに関するライブラリのことです。コンテナは、動的な配列やリスト、連想配列などのデータの入れ物アルゴリズムは、ソートやマージなどなど、上のコンテナに使うものです上手く使えば、短い時間で良いプログラムが書けてしまう便利なものですそこで、STLの機能を知っていて使おうかなと思っている方、もしくは使い始めたばかりの方向けに、コンテナの1つ、vectorについての小ネタを書いてみますそれでは、小ネタに移ってみましょう〜ループの際に一時変数に入れるとお得vectorは配列の代わりに使うことが多いため、下のようなループを書くことがあります。}}ループの中身は、sizeメソッドの呼び出しを除いて普通の配列と同じかと思います。今回は、デバッガで値が見れるようにもなりますこのコードをデバッガで動かすと、「dataVec[i]」の値は見れなくとも「data」の値は見ることが出来るため、中身の確認が出来るようになるというわけです。1行追加することで意外な効果がありますね。reserveメソッドでサイズの自動拡張を防ぐvectorには、push_backメソッドという、末端に要素を追加する便利な機能があります。valueVec.push_back(i);}と書いた場合、ループを抜けるまでに複数回のサイズの拡張が行われることになります。・古いメモリ領域の開放が1セットとなって行われます。う〜〜ん、出来れば避けたいものですそこで、reserveメソッドを使って事前に格納できる要素数を増やしておきます。valueVec.push_back(i);}この変更を加えると、1000個までの要素を格納できるので、ループの中でサイズの拡張が行われることはなくなりますちなみに、許容量を増やすだけなのでreserveメソッドを呼んだ直後の要素数は0ということにご注意ください。いう気もしますが、使わないことも選択肢の1つです。vectorは、通常の配列と同じ使い方が出来る上に、サイズの取得や要素の追加・削除、動的な拡張などが行える便利な物です。立ち止まってみて、本当に必要か考えてみるのも良いかもしれません。要素の追加削除が頻繁に行われるならlistという選択肢もあります。必要な機能と状況に合わせて、使うかどうかを決めてみてくださいSTLのvectorを使おうと思っている方、使い始めた方、ちょっとは参考になったでしょうか?機会があれば、他の機能についても触れてみたいと思います。[必須入力]※画像の中の文字を半角で入力してください。※ブログオーナーが承認したコメントのみ表示されます。31最近の記事(12/04)ヘキサドライブ日記、お引越しのお知らせ(11/28)手軽に作詞作曲を。