- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- データ構造
- データ構造索引
- クラス階層
- データフィールド

Public 型 | Public メソッド
クラス テンプレート mist::shared_array< T >
メモリ領域の自動開放を行うポインタ

配列へのポインタの参照カウントを管理し，どこからも参照されなくなったときにメモリを自動開放するポインタ [詳細]

`#include <pointer.h>`

mist::__shared_memory__::shared_base< T >を継承しています。

## Public 型
typedef size_t | size_type
| 符号なしの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には size_t 型と同じ
typedef ptrdiff_t | difference_type
| 符号付きの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には ptrdiff_t 型と同じ
typedef T | value_type
| 内部データ型．T と同じ
typedef T * | pointer
| データ型のポインター型．data の場合，data * となる
typedef T & | reference
| データ型の参照．data の場合，data & となる
typedef const T & | const_reference
| データ型の const 参照．data の場合，const data & となる
typedef const T * | const_pointer
| データ型の const ポインター型．data の場合，const data * となる

## Public メソッド
| shared_array ()
| 未管理のポインタで初期化
| shared_array (pointer p)
| 管理するポインタを設定し，参照カウントを 1 増やす
| shared_array (const shared_array &p)
| 他の共有メモリポインタを用いて初期化し，参照カウントを 1 増やす
| ~shared_array ()
| 管理するポインタの参照カウントを1減らす
const shared_array & | operator= (const shared_array &p)
| 他の共有メモリポインタを代入する
reference | operator* ()
| ポインタが指す内容への参照を返す
const_reference | operator* () const
| ポインタが指す内容への参照を返す
pointer | operator-> ()
| ポインタが指す内容へのアクセスを行う
const_pointer | operator-> () const
| ポインタが指す内容へのアクセスを行う
reference | operator[] (difference_type index)
| 配列の要素へのアクセスを行う
const_reference | operator[] (difference_type index) const
| 配列の要素へのアクセスを行う
void | reset ()
| 管理しているポインタの参照カウントを減らす
bool | operator== (const shared_array &p) const
| 2つのポインタが同一かどうかを判定する
bool | operator!= (const shared_array &p) const
| 2つのポインタが等しくないどうかを判定する
bool | operator< (const shared_array &p) const
| 2つのポインタの < を判定する
bool | operator<= (const shared_array &p) const
| 2つのポインタの <= を判定する
bool | operator> (const shared_array &p) const
| 2つのポインタの > を判定する
bool | operator>= (const shared_array &p) const
| 2つのポインタの >= を判定する
bool | operator== (const pointer &p) const
| 2つのポインタが同一かどうかを判定する
bool | operator!= (const pointer &p) const
| 2つのポインタが等しくないどうかを判定する
bool | operator< (const pointer &p) const
| 2つのポインタの < を判定する
bool | operator<= (const pointer &p) const
| 2つのポインタの <= を判定する
bool | operator> (const pointer &p) const
| 2つのポインタの > を判定する
bool | operator>= (const pointer &p) const
| 2つのポインタの >= を判定する

## 説明

### template<class T>
class mist::shared_array< T >

配列へのポインタの参照カウントを管理し，どこからも参照されなくなったときにメモリを自動開放するポインタ

対象が配列ということを除けば，shared_ptr と同じ

注意
  配列に対してしか利用できない
  循環参照が発生した場合は，正しく管理できない

ポインタの使用例
{
mist::shared_ptr< std::string > a;
{
mist::shared_ptr< std::string > b = new std::string[ 2 ];
a = b; // a が b と同じメモリ領域を参照するようにし，参照カウントを増やす
a[ 0 ] = a[ 1 ] = "test";
} // <- ここでは b に割り当てたメモリ領域の参照カウントが減るが，a が同じ領域を参照しているので，メモリ領域は開放されない
...
} // <- ここで a に割り当てたメモリ領域がどこからも参照されなくなるため，メモリ領域が自動的に開放される

## コンストラクタとデストラクタ

template<class T>

mist::shared_array< T >::~shared_array | ( |  | ) |
| inline

管理するポインタの参照カウントを1減らす

どこからも参照されなくなったらメモリを開放する

## 関数

template<class T>

const shared_array& mist::shared_array< T >::operator= | ( | const shared_array< T > & | p | ) |
| inline

他の共有メモリポインタを代入する

注意
  すでに管理しているポインタがある場合は，参照カウントを1減らす
  その際に，どこからも参照されなくなったらメモリを開放する

template<class T>

void mist::shared_array< T >::reset | ( |  | ) |
| inline

管理しているポインタの参照カウントを減らす

注意
  どこからも参照されなくなったらメモリを開放する

このクラスの説明は次のファイルから生成されました:

- pointer.h