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

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

データ構造 | Public 型 | Public メソッド | Protected メソッド | Protected 変数
クラス テンプレート mist::array< T, Allocator >

要素数が可変の1次元配列 [詳細]

`#include <mist.h>`

mist::array< T, Allocator >に対する継承グラフ

## データ構造
struct | rebind
| データ型の変換を行う [詳細]

## Public 型
typedef Allocator | allocator_type
| MISTコンテナが利用するアロケータ型
typedef Allocator::reference | reference
| MISTのコンテナ内に格納するデータ型の参照．mist::array< data > の場合，data & となる
typedef Allocator::const_reference | const_reference
| MISTのコンテナ内に格納するデータ型の const 参照．mist::array< data > の場合，const data & となる
typedef Allocator::value_type | value_type
| MISTのコンテナ内に格納するデータ型．mist::array< data > の data と同じ
typedef Allocator::size_type | size_type
| 符号なしの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には size_t 型と同じ
typedef Allocator::difference_type | difference_type
| 符号付きの整数を表す型．コンテナ内の要素数や，各要素を指定するときなどに利用し，内部的には ptrdiff_t 型と同じ
typedef Allocator::pointer | pointer
| MISTのコンテナ内に格納するデータ型のポインター型．mist::array< data > の場合，data * となる
typedef Allocator::const_pointer | const_pointer
| MISTのコンテナ内に格納するデータ型の const ポインター型．mist::array< data > の場合，const data * となる
typedef mist_iterator1< T, ptrdiff_t, pointer, reference > | iterator
| MISTのコンテナ内を操作する，STLで言う順方向のランダムアクセスイテレータ
typedef mist_iterator1< T, ptrdiff_t, const_pointer, const_reference > | const_iterator
| MISTのコンテナ内を操作する，順方向のランダムアクセスイテレータのコンスト版
typedef mist_reverse_iterator < mist_iterator1< T, ptrdiff_t, pointer, reference > > | reverse_iterator
| MISTのコンテナ内を操作する，逆方向のランダムアクセスイテレータ
typedef mist_reverse_iterator < mist_iterator1< T, ptrdiff_t, const_pointer, const_reference > > | const_reverse_iterator
| MISTのコンテナ内を操作する，逆方向のランダムアクセスイテレータのコンスト版

## Public メソッド
bool | resize (size_type num, size_type=0, size_type=0)
| コンテナ内の要素数を変更する
bool | trim (array &out, size_type index, difference_type num=-1) const
| コンテナ内の要素をトリミングする
bool | trim (size_type index, difference_type num=-1)
| コンテナ内の要素をトリミングする
bool | swap (array &a)
| コンテナ内の全ての内容を入れ替える．
void | clear ()
| コンテナの要素を空にする
void | fill ()
| コンテナ内のデータ要素をデフォルト値で初期化する
void | fill (const value_type &val)
| コンテナ内のデータ要素を指定された値で初期化する
bool | empty () const
| コンテナが空かどうかを判定
size_type | size () const
| コンテナに格納されているデータ数を返す
size_type | size1 () const
| X軸方向のコンテナに格納されているデータ数を返す
size_type | size2 () const
| Y軸方向のコンテナに格納されているデータ数を返す（常に1を返す）
size_type | size3 () const
| Z軸方向のコンテナに格納されているデータ数を返す（常に1を返す）
size_type | width () const
| X軸方向のコンテナに格納されているデータ数を返す
size_type | height () const
| Y軸方向のコンテナに格納されているデータ数を返す（常に1を返す）
size_type | depth () const
| Z軸方向のコンテナに格納されているデータ数を返す（常に1を返す）
double | reso1 (double)
| X軸方向の解像度を返す
double | reso1 () const
| X軸方向の解像度を設定する
double | reso2 (double)
| Y軸方向の解像度を返す
double | reso2 () const
| Y軸方向の解像度を設定する
double | reso3 (double)
| Z軸方向の解像度を返す
double | reso3 () const
| Z軸方向の解像度を設定する）
size_type | byte () const
| コンテナ内の要素が占めるデータ量をバイト単位で返す
bool | is_memory_shared () const
| 外部で割り当てられたメモリ領域を使用しているかどうか
iterator | begin ()
| コンテナの先頭を指すランダムアクセスイテレータを返す
const_iterator | begin () const
| コンテナの先頭を指すコンスト型のコンテナを操作するランダムアクセスイテレータを返す
iterator | end ()
| コンテナの末尾を指すランダムアクセスイテレータを返す
const_iterator | end () const
| コンテナの末尾を指すコンスト型のコンテナを操作するランダムアクセスイテレータを返す
reverse_iterator | rbegin ()
| コンテナの末尾を指す逆方向ランダムアクセスイテレータを返す
const_reverse_iterator | rbegin () const
| コンテナの末尾を指すコンスト型のコンテナを操作する逆方向ランダムアクセスイテレータを返す
reverse_iterator | rend ()
| コンテナの先頭を指す逆方向ランダムアクセスイテレータを返す
const_reverse_iterator | rend () const
| コンテナの先頭を指すコンスト型のコンテナを操作する逆方向ランダムアクセスイテレータを返す
size_type | max_size () const
| 使用しているアロケータが確保可能なメモリの最大値を返す
template<class TT , class AAlocator >
const array & | operator= (const array< TT, AAlocator > &o)
| 要素の型が異なるコンテナを代入する
const array & | operator= (const array &o)
| 要素の型が異なるコンテナを代入する
reference | at (size_type index, size_type dmy1=0, size_type dmy2=0)
| index で示される位置の要素の参照を返す
const_reference | at (size_type index, size_type dmy1=0, size_type dmy2=0) const
| index で示される位置の要素の const 参照を返す
reference | operator() (size_type index, size_type dmy1=0, size_type dmy2=0)
| index で示される位置の要素の参照を返す
const_reference | operator() (size_type index, size_type dmy1=0, size_type dmy2=0) const
| index で示される位置の要素の const 参照を返す
reference | operator[] (size_type index)
| index で示される位置の要素の参照を返す
const_reference | operator[] (size_type index) const
| index で示される位置の要素の const 参照を返す
| array ()
| ディフォルトコンストラクタ．要素数 0 のコンテナを作成する
| array (const Allocator &a)
| アロケータ a のコピーを利用する
| array (size_type num)
| 要素数 num 個のコンテナを作成し，デフォルト値で要素を初期化する
| array (size_type num, const Allocator &a)
| 要素数 num 個のコンテナを作成し，アロケータ a のコピーを利用する
| array (size_type num, const value_type &val)
| 要素数 num 個のコンテナを作成し，値 val で初期化する
| array (size_type num, const value_type &val, const Allocator &a)
| 要素数 num 個のコンテナを作成し，値 val で初期化し，アロケータ a のコピーを利用する
| array (const_iterator s, const_iterator e)
| イテレータ s と e の範囲の値を用いて，配列を初期化する
| array (const_iterator s, const_iterator e, const Allocator &a)
| イテレータ s と e の範囲の値を用いて，配列を初期化し，アロケータ a のコピーを利用する
| array (size_type num, pointer ptr, size_type mem_available)
| ptr が指すメモリ領域に，要素数 num 個のコンテナを作成する（ptr が指す先の利用可能なメモリ量は mem_available ）
| array (size_type num, const value_type &val, pointer ptr, size_type mem_available)
| ptr が指すメモリ領域に，要素数 num 個のコンテナを作成し値 val で初期化する（ptr が指す先の利用可能なメモリ量は mem_available ）
template<class TT , class AAlocator >
| array (const array< TT, AAlocator > &o)
| 他の array 配列で要素の型が異なるものから同じ要素数の配列を作成する
| array (const array< T, Allocator > &o)
| 他の array 配列で同じ要素型のものを用いて初期化する
| ~array ()
| コンテナが利用しているリソースを全て開放する

## Protected メソッド
pointer | paccess (size_type index)
| index で示される位置の要素のポインタを返す
const_pointer | paccess (size_type index) const
| index で示される位置の要素の const ポインタを返す

## Protected 変数
mist_allocator< T, Allocator > | allocator_
| 各コンテナで利用するアロケータオブジェクト
T * | data_
| コンテナで扱うデータの先頭を表すポインタ

## 説明

### template<class T, class Allocator = std::allocator< T >>
class mist::array< T, Allocator >

要素数が可変の1次元配列

全てのMISTコンテナの基本となるクラス （mist/mist.h をインクルードする）

引数

  T | … MISTのコンテナ内に格納するデータ型
  Allocator | … MISTコンテナが利用するアロケータ型．省略した場合は，STLのデフォルトアロケータを使用する

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

template<class T, class Allocator = std::allocator< T >>
template<class TT , class AAlocator >

mist::array< T, Allocator >::array | ( | const array< TT, AAlocator > & | o | ) |
| inline

他の array 配列で要素の型が異なるものから同じ要素数の配列を作成する

注意
  異なる要素型間でデータの変換が可能でなくてはならない

## 関数

template<class T, class Allocator = std::allocator< T >>

reference mist::array< T, Allocator >::at | ( | size_type | index,
|  | size_type | dmy1 = `0`,
|  | size_type | dmy2 = `0`
| ) |  |
| inline

index で示される位置の要素の参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置
  [in] | dmy1 | … 使用しない
  [in] | dmy2 | … 使用しない

戻り値
  指定された要素を示す参照

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, と mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

const_reference mist::array< T, Allocator >::at | ( | size_type | index,
|  | size_type | dmy1 = `0`,
|  | size_type | dmy2 = `0`
| ) |  | const
| inline

index で示される位置の要素の const 参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置
  [in] | dmy1 | … 使用しない
  [in] | dmy2 | … 使用しない

戻り値
  指定された要素を示す const 参照

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, と mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

iterator mist::array< T, Allocator >::begin | ( |  | ) |
| inline

コンテナの先頭を指すランダムアクセスイテレータを返す

       @code 順方向ランダムアクセスイテレータの使用例

std::cout << "順方向ランダムアクセスイテレータ" << std::endl; mist::array< int >::iterator ite1 = a.begin( ); for( ; ite1 != a.end( ) ; ite1++ ) { std::cout << *ite1 << " "; } std::cout << std::endl << std::endl;

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, と mist::array3< ivector_type >で再定義されています。

参照元 mist::emd(), と mist::extract_mesh().

template<class T, class Allocator = std::allocator< T >>

void mist::array< T, Allocator >::clear | ( |  | ) |
| inline

コンテナの要素を空にする

コンテナに格納されているデータを全て削除し，コンテナを空（要素数0）にする

mist::marray< array3< vector_type > >, mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, mist::matrix< T, Allocator >, mist::matrix< double >, mist::matrix< V, A >, mist::matrix< difference_type >, と mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

bool mist::array< T, Allocator >::empty | ( |  | ) | const
| inline

コンテナが空かどうかを判定

戻り値

  true | … コンテナの要素数が空（0）の場合
  false | … コンテナの要素数が空（0）でない場合

参照元 mist::canny(), mist::det(), mist::histogram::estimate_mixture(), mist::linear::filter(), mist::average::filter(), mist::linear::filter1d(), mist::harris(), mist::localColorChange(), mist::median(), mist::mode(), mist::multiply(), と mist::discriminant_analysis::threshold().

template<class T, class Allocator = std::allocator< T >>

void mist::array< T, Allocator >::fill | ( |  | ) |
| inline

コンテナ内のデータ要素をデフォルト値で初期化する

デフォルトコンストラクタの値で初期化する． 組み込み型（int や double など）の場合は，全ての要素を0で初期化する．

参照元 mist::statistics::generate_histogram(), mist::multiply(), と mist::permutation_matrix().

template<class T, class Allocator = std::allocator< T >>

void mist::array< T, Allocator >::fill | ( | const value_type & | val | ) |
| inline

コンテナ内のデータ要素を指定された値で初期化する

全ての要素を値 val で初期化する．

引数

  [in] | val | … 要素を初期化する値

template<class T, class Allocator = std::allocator< T >>

reference mist::array< T, Allocator >::operator() | ( | size_type | index,
|  | size_type | dmy1 = `0`,
|  | size_type | dmy2 = `0`
| ) |  |
| inline

index で示される位置の要素の参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置
  [in] | dmy1 | … 使用しない
  [in] | dmy2 | … 使用しない

戻り値
  指定された要素を示す参照

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, と mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

const_reference mist::array< T, Allocator >::operator() | ( | size_type | index,
|  | size_type | dmy1 = `0`,
|  | size_type | dmy2 = `0`
| ) |  | const
| inline

index で示される位置の要素の const 参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置
  [in] | dmy1 | … 使用しない
  [in] | dmy2 | … 使用しない

戻り値
  指定された要素を示す const 参照

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, と mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>
template<class TT , class AAlocator >

const array& mist::array< T, Allocator >::operator= | ( | const array< TT, AAlocator > & | o | ) |
| inline

要素の型が異なるコンテナを代入する

コピー元であるコンテナ o と全く同じコンテナを作成する． コピー先（ここでは自分自身）の要素数が o と異なる場合は，自動的にサイズを調整する． コピー元とコピー先でデータ型（array< data > の data）が異なる場合の代入を行う． メモリの確保に失敗したら，空のコンテナとなる

引数

  [in] | o | … コピー元のコンテナ

戻り値
  自分自身

template<class T, class Allocator = std::allocator< T >>

const array& mist::array< T, Allocator >::operator= | ( | const array< T, Allocator > & | o | ) |
| inline

要素の型が異なるコンテナを代入する

コピー元であるコンテナ o と全く同じコンテナを作成する． コピー先（ここでは自分自身）の要素数が o と異なる場合は，自動的にサイズを調整する． メモリの確保に失敗したら，空のコンテナとなる

引数

  [in] | o | … コピー元のコンテナ

戻り値
  自分自身

mist::marray< array3< vector_type > >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

reference mist::array< T, Allocator >::operator[] | ( | size_type | index | ) |
| inline

index で示される位置の要素の参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置

戻り値
  指定された要素を示す参照

mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

const_reference mist::array< T, Allocator >::operator[] | ( | size_type | index | ) | const
| inline

index で示される位置の要素の const 参照を返す

DEBUG マクロを有効にした（NDEBUGマクロを定義しない）場合は，指定された index が有効な範囲内にあるかをチェックする

引数

  [in] | index | … コンテナ内の要素位置

戻り値
  指定された要素を示す const 参照

mist::bitmap< BITS, Allocator >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

pointer mist::array< T, Allocator >::paccess | ( | size_type | index | ) |
| inline protected

index で示される位置の要素のポインタを返す

引数

  [in] | index | … コンテナ内の要素位置

戻り値
  指定された要素を示すポインタ

参照元 mist::array< ivector_type, std::allocator< ivector_type > >::trim().

template<class T, class Allocator = std::allocator< T >>

const_pointer mist::array< T, Allocator >::paccess | ( | size_type | index | ) | const
| inline protected

index で示される位置の要素の const ポインタを返す

引数

  [in] | index | … コンテナ内の要素位置

戻り値
  指定された要素を示す const ポインタ

template<class T, class Allocator = std::allocator< T >>

reverse_iterator mist::array< T, Allocator >::rbegin | ( |  | ) |
| inline

コンテナの末尾を指す逆方向ランダムアクセスイテレータを返す

       @code 逆方向ランダムアクセスイテレータの使用例

std::cout << "逆方向ランダムアクセスイテレータ" << std::endl; mist::array< int >::reverse_iterator ite2 = a.rbegin( ); for( ; ite2 != a.rend( ) ; ite2++ ) { std::cout << *ite2 << " "; } std::cout << std::endl;

mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, と mist::array3< ivector_type >で再定義されています。

template<class T, class Allocator = std::allocator< T >>

bool mist::array< T, Allocator >::resize | ( | size_type | num,
|  | size_type | = `0`,
|  | size_type | = `0`
| ) |  |
| inline

コンテナ内の要素数を変更する

コンテナのサイズを num 個に変更する． 元のコンテナサイズと異なる場合は，自動的にサイズを調整する． 要素数が変更された場合のみ全ての要素の値はデフォルトコンストラクタで初期化される． また，組み込み型（int や double など）の場合は，全ての要素を0で初期化する．

注意
  必ず要素を初期化するためには，fill 関数を利用してください．

引数

  [in] | num | … リサイズ後のコンテナ内の要素数
  [in] | dmy1 | … ダミー変数（使用しない）
  [in] | dmy2 | … ダミー変数（使用しない）

戻り値

  true | … 正常にリサイズが終了
  false | … リサイズ後のメモリを確保できなかった場合

mist::marray< array3< vector_type > >, mist::array3< T, Allocator >, mist::array3< vector_type >, mist::array3< value_type >, mist::array3< ivector_type >, mist::array2< T, Allocator >, mist::array2< coefficients >, mist::array2< value_type >, mist::array2< unsigned int >, mist::array2< vector_type, std::allocator< vector_type > >, mist::array2< value_type, std::allocator< value_type > >, mist::array2< ivector_type, std::allocator< ivector_type > >, と mist::bitmap< BITS, Allocator >で再定義されています。

参照元 mist::integral_image< array< T, Allocator > >::construct_integral_array(), mist::dct(), mist::dst(), mist::emd(), mist::linear::filter(), mist::average::filter(), mist::statistics::hu_moments(), mist::idct(), mist::idst(), mist::nearest::interpolate(), mist::mean::interpolate(), mist::linear::interpolate(), mist::cubic::interpolate(), mist::BSpline::interpolate(), mist::sinc::interpolate(), mist::median(), mist::parcor(), と mist::array< ivector_type, std::allocator< ivector_type > >::trim().

template<class T, class Allocator = std::allocator< T >>

bool mist::array< T, Allocator >::swap | ( | array< T, Allocator > & | a | ) |
| inline

コンテナ内の全ての内容を入れ替える．

注意
  どちらかのコンテナが外部メモリを利用している場合は，スワップは必ず失敗する

入れ替え元のコンテナ a の中身と全て入れ替える

引数

  [in] | a | … 内容を入れ替える対象

戻り値

  true | … データのスワップに成功
  false | … データのスワップに失敗

template<class T, class Allocator = std::allocator< T >>

bool mist::array< T, Allocator >::trim | ( | array< T, Allocator > & | out,
|  | size_type | index,
|  | difference_type | num = `-1`
| ) |  | const
| inline

コンテナ内の要素をトリミングする

メモリの確保に失敗したら，空のコンテナとなる

引数

  [out] | out | … トリミング結果を格納するオブジェクト（サイズは自動で変更されます）
  [in] | index | … トリミングの開始位置（ゼロから始まるインデックス）
  [in] | num | … トリミング後の要素数（-1の場合は，最後までをコピーする）

戻り値

  true | … トリミングに成功した場合（元とサイズが変わらない場合も含む）
  false | … 不正なトリミングを行おうとした場合

参照元 mist::array< ivector_type, std::allocator< ivector_type > >::trim().

template<class T, class Allocator = std::allocator< T >>

bool mist::array< T, Allocator >::trim | ( | size_type | index,
|  | difference_type | num = `-1`
| ) |  |
| inline

コンテナ内の要素をトリミングする

メモリの確保に失敗したら，空のコンテナとなる

引数

  [in] | index | … トリミングの開始位置（ゼロから始まるインデックス）
  [in] | num | … トリミング後の要素数（-1の場合は，最後までをコピーする）

戻り値

  true | … トリミングに成功した場合（元とサイズが変わらない場合も含む）
  false | … 不正なトリミングを行おうとした場合

mist::array1< T, Allocator >, mist::array1< coefficients, std::allocator< coefficients > >, mist::array1< int >, mist::array1< unsigned int, std::allocator< unsigned int > >, mist::array1< vector_type, std::allocator< vector_type > >, mist::array1< value_type, std::allocator< value_type > >, と mist::array1< ivector_type, std::allocator< ivector_type > >で再定義されています。

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

- mist.h