私は設計しているライブラリに対して水密のインターフェイスを作ろうとしています。ユーザーは2次元データを入力することになるので、std::transform
に似たイテレーター・インターフェースが透明であると考えました。 しかし、イテレータの乱用をどのように処理するかはわかりません。イテレータのインターフェイスを処理する例外
私のインタフェースは、(1よりよいがある場合、私はインターフェイスを変更することができます)のようなものです:たとえば
template<typename InputItrX, typename InputItrY>
set_data(InputItrX beginX, InputItrX endX, InputItrY beginY)
{
//What exception handling should I do here?
size_t array_size = endX-beginX; //get the size of the xarray.
my_xVector.resize(array_size); //resize my internal container
my_yVector.resize(array_size); // ..and for the ydata.
std::copy(beginX, endX, my_xVector.begin()); //copy X
std::copy(beginY, beginY+array_size, my_yVector.begin()); //copy Y
}
ユーザーがインターフェイスでアップ混乱と
を書き込み得れば、私のプログラムが不定となりset_data(xdata.begin(), ydata.begin(), xdata.end());
またはxdata
には20個の要素がありますが、ydata
には要素がありません。
私のライブラリインターフェイスでこのような間違いを確認することはできますか?
+1、私はランダムアクセス制限について考えていませんでした。 – Tom
完全性のために:ランダムアクセスイテレータチェックはここで扱われます:http://stackoverflow.com/q/4307271/498253 – Tom