我想寫一個函數,它需要兩個向量並將它們合併在一起,來回交替(即v1 = 1,2,3 v2 = 4,5,6會產生v3 = 1,4 ,2,5,3,6)。問題是,當我運行我的函數時,我得到一個錯誤,說'矢量迭代器是不兼容的'。從我的研究中,我認爲它與我使用.begin()和.end()函數有關,但是由於我僅僅在這幾個月內就看到了,所以我不知道如何修復它。注意:NULL上的push_back是在向量中留下一個空白空間。迭代器不兼容錯誤
下面的代碼:
void merge(vector<double> x, vector<double> y, vector<double>& merged) {
auto xStart = x.begin();
auto yStart = y.begin();
while (xStart != x.end() && yStart != x.end()) {
merged.push_back(*xStart);
merged.push_back(*yStart);
++xStart;
++yStart;
}
if (xStart != x.end()) {
while (xStart!= x.end()) {
merged.push_back(*xStart);
merged.push_back(NULL);
++xStart;
}
}
if (yStart != y.end()) {
while (yStart != y.end()) {
merged.push_back(*yStart);
merged.push_back(NULL);
++yStart;
}
}
}
'yStart!= x.end( )''''''''''yStart!= y.end()' –
如果您在調試器下運行您的代碼,您會發現調試器指示了線路連接保留錯誤 –
'push_back(NULL)'是一個錯誤(可能無法在較新的編譯器上編譯),請改用'push_back(0.0)'。 「如果(X)while(X)'是多餘的,你可以直接進入'while'。 –