我正在尝试合并几个向量以创建一个结果向量,该向量是输入向量中元素的联合,使用 C++ 中的 STL。每个输入都已排序,并且元素是无符号短的。
我收到一个错误“表达式:向量迭代器 + 偏移超出范围”,我不知道为什么。这是一个调试版本,在 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 然后通过此处未显示的代码复制到无符号 short 的 C++ 数组中)。