配列 |
はじめに
配列。データ処理を行うアプリケーションに必ずついてくるものかと思います。MFCを使っているとCArrayという配列関数があるのでお世話になっています。
ということで、MFCを使わないアプリケーションでも同じように使えるクラスを書いてみました。
可変的な定義「テンプレート」を始めて使ってみました。マクロによる置き換えのような感じだそうで、これは便利だなぁと思いました。このような処理にはうってつけですね。
ダウンロード:
myArrayImpl.zip
準備
使いたいファイルで"myArray.h"をインクルードしてください。
それで準備完了です。
使い方
まず定義です。ここではBYTE型の配列を定義することにします。
/* 配列の定義 */ |
まんなかの"BYTE"のところに使いたい型を記述します。2つありますが同じのを入れとけばOKです。
続いて、使い方のサンプルを書いていきます。
要素を追加:
/* 配列に3を追加する */ |
要素を削除:
/* 2番目の要素を削除 */ |
要素を全て削除:
/* 要素を全て削除 */ |
要素数を取得:
int nCount; |
要素を変更:
/* 3番目の要素を変更 */ /* 2番目の要素を変更 */ |
要素を取得:
BYTE byTmp; /* 1番目の要素を取得 */ /* 5番目の要素を取得 */ |
というように使います。構造体やポインタも同じように配列として扱うことができます。ポインタに関しては、開放はユーザーで行う必要があります。あくまでポインタを配列に入れるだけですので。
詳しくは"myArray.h"と"myArrayImpl.h"を見てください。それぞれ、定義と実装のファイルです。このクラスで使用しているテンプレートの都合上、実装ファイルもヘッダになっています。なぜヘッダじゃないといけないのかよくわかっていないのですが、そういうものなんだと割り切っています。ちなみに、関数名はMFCのCArrayと同じですね。MFCのソースを見ると中身も似ている気がしますが、それは置いときましょう。
このクラスを使うことで、最大いくつになるかわからない配列を自由に使うことができます。必要になったときにぽんぽん追加していけるわけです。「間の要素を1つだけ消す」関数が無いですが、必要に応じて追加してみてくださいませ。今のところ最低限のものしか書いていません。