0
我正在嘗試合併多個向量來創建一個結果向量,該向量是輸入向量中元素的聯合,使用C++中的STL。每個輸入已經按排序順序排列,並且元素無符號短。C++ STL set_union獲取錯誤向量迭代器+偏移量超出範圍
我得到一個錯誤「表達式:向量迭代器+偏移量超出範圍」,我不知道爲什麼。這是一個調試版本,在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++數組中,此處未顯示代碼)。
我想我理解你的建議,但你能解釋爲什麼矢量溫度不會自動增加大小嗎?我認爲這是矢量容器的目的:根據需要進行擴展。 – Woody20 2014-09-25 16:21:47
@ Woody20我試着解釋,看我更新的答案。 – 2014-09-25 18:33:26