C++ で STL を使用して、複数のベクトルをマージして、入力ベクトル内の要素の結合である結果のベクトルを作成しようとしています。各入力は既にソートされており、要素は unsigned short です。
「Expression: vector iterator + offset out of range」というエラーが表示されますが、その理由がわかりません。これは、Visual Studio 2013 デバッガーで実行されるデバッグ ビルドです。
コードは次のとおりです。
std::vector <unsigned short> wl, temp;
int iS; std::vector <unsigned short>::iterator oi, it;
for (iS=0; iS<nScans; iS++)
{
std::vector<unsigned short> sc(scan[iS].wavelength, scan[iS].wavelength + scan[iS].nWavelengths);
oi=set_union(wl.begin(), wl.end(), sc.begin(), sc.end(), temp.begin());
wl.assign(temp.begin(), oi); // temp is needed because destination cannot overlap source
}
その意図は、各スキャン (sc) からの波長のベクトルがベクトル wl にマージされることです。(ベクトル wl は、ここには示されていないコードによって unsigned short の C++ 配列にコピーされます)。