今回はC++の標準テンプレートライブラリ
Standard Template Library についての話です。
標準テンプレートライブラリとは、配列、リスト、キューのような複数のデータを
管理したい場合に、その実装に頭を悩ませることなしに利用できる
大変便利なクラスやアルゴリズムの集合です。(^^)
また、複数のデータを格納して管理するオブジェクトのことを
コンテナオブジェクトといいます。
一例として次のようなものがあります。
- 配列 vector
- リスト list
- キュー queue
- スタック stack
- 集合 set
まだ、他にも色々ありますが、ここで全て扱うには難しい内容ですし
割愛させていただきます...(^^;)
あれこれ難しいことを考える必要がないし、汎用的で高機能という
素晴らしさを兼ね備えているのですが、メモリ制約がある組み込み
ソフトウェア開発においては、当然使えません...(-_-;)残念
そんなわけですが、例によって簡単なプログラムを用意しました。
今回は、vectorクラスを使ってみます。(^^)
これのスゴいところは、メモリが足りない時に自動的にメモリを
確保することです。
#include <iostream> // vectorクラスを使います
#include <vector>
using namespace std;
int main(void)
{
vector<int> nVec; // int型のvectorオブジェクトを生成
nVec.push_back(5); // データを格納しています...
nVec.push_back(10);
nVec.push_back(15);
// これで要素のサイズが分かります
cout << "要素数は " << (int)nVec.size() << " です。" << endl;
// 中身を確認してみましょう
for (int i = 0; i < (int)nVec.size(); i++) {
// 通常の配列と同じようにアクセスできます:-)
cout << "vectoro[" << i << "] = " << nVec[i] << endl;
}
return 0;
}
実行結果
# ./test
要素数は 3 です。
vectoro[0] = 5
vectoro[1] = 10
vectoro[2] = 15
最初に配列の要素を決めなくてよいとは、何と便利...
しかも、動的にメモリ確保してることを全く意識させませんね。
いやぁ、STLを使えるってホントに素晴らしいですね(^-^)
今日の名言
結局のところ、最悪の不幸は決して起こらない。たいていの場合、
不幸を予期するから悲惨な目に合うのだ。
オノレ・ド・バルザック
一日を顧みて、どこかおもしろかった、楽しかった、本当に満足だったという
ところがなければ、その一日は無駄に過ごしたことになる。私にとって、
それは神に背くことであり、よこしまなことなのだ。
ドワイト・D・アイゼンハワー
最悪の事柄を受け入れてしまえば、もはや失うものはなくなる。
裏を返して言えば、どう転んでも儲けものなのだ!
デール・カーネギー
時間を浪費するな、人生は時間の積み重ねなのだから。
ベンジャミン・フランクリン