bambooflow Note

STL

最終更新:

bambooflow

- view
メンバー限定 登録/ログイン

C++標準テンプレートライブラリSTLの利用



STLとは

STL:Standard Template Library
C++のテンプレート機能を最大限に利用した標準ライブラリ。
STLは簡単にいうと配列のような要素の集合(コンテナ)を扱いやすくしたもの。
たとえば、動的な配列の確保を繰り返したり、ソートしたり、FIFOの構成を作ったり、連想配列を構成したりがSTLを使うことで容易になる。また、速度も早い。
現在すべてのC++のコンパイラで提供されている。
SystemCはVerilog-HDLと違って、C++で記述できるものは制限なく使うことができるのが利点。なので、活用できる便利な機能は存分に使うべし。

STLの構成

次のもので構成されている。
  • コンテナ
  • 共通アルゴリズム
  • イテレータ
  • 関数オブジェクト
ここでは、最低限使えればとりあえずよしとし、あまり詳しく説明しない。
もし、興味があるようであれば、別のサイトを参照のこと。

コンテナの種類

代表的なものは以下のとおり。
コンテナ 説明
vector<> 動的配列、ランダムアクセスが可能、Cの配列と互換がある
deque<> 動的配列、両端キュー
map<> 連想配列、バイナリツリーに要素を持ちソートされた状態で取り出せる
list<> 双方向リンクドリスト、要素の入れ換えが得意

vector<>の利用

vectorは動的配列。
ランダムアクセスに向いているが、要素の追加・削除は要素数に比例して時間がかかる。
配列の代わりに使用するとよい。

vectorコンテナを利用するには次をインクルードする必要がある。
#include <vector>

必要なら次のおまじないをかく。
using namespace std;
もし、ネームスペースがわかる人であれば、いちいちstd::を書くことをすすめる。

vectorへのおもなアクセス

以下は全てではないが、よく使いそうなものを挙げた。
メソッド・書式 説明
iterator begin() 先頭を表すイタレータを返す
iterator end() 末尾を表すイタレータを返す
bool empty() vectorの要素が空なら"true"、空でなければ"false"を返す
int size() 要素数を返す
void clear() すべての要素を削除
reference at( size_type pos ) pos番目の要素を返す
reference operator[]( size_type pos ) pos番目の要素を返す。「at」を使用することを推奨)
void assign( const iterator first, const iterator last ) vectorの内容をfirstからlastに置き換え
void assign( size_type n, const T& x = T() ) vectorの内容をn個のxに置き換え
void swap( vector x ) vectorの内容をxと交換
void resize(size_type new_size, T& x = T()) 大きさを変える。必要なら領域を拡張し、拡張分はxで初期化される

  • コンストラクタ
書式 説明(例)
vector(); 例) vector<int> vect;
長さ0のint型のvectorを作る
vector( size_type size ); 例) vector<int> vect2(20);
長さ20のint型vectorを作る
vector( size_type size, const TYPE &val ); 例) vector<int> vect3(10, 100);
長さ10のint型vectorを作り、すべての要素を100で初期化する
vector( const vector &from ); 例) vector<int> vect4(vect1);
vect1をコピーし、vect4とする

メモリとしてのvectorの利用例

std::vector<unsigned int> mem( 1024, 0 ); // RAM、1024個用意し、すべて0で初期化
// Write
mem.at(addr) = w_data; // mem[addr] = w_data; でもOK
// Read
mem[addr] = mem.at(addr); // r_data = mem[addr]; でもOK
 

タグ:

SystemC STL
記事メニュー
目安箱バナー