Vector :: fallback reason "vector iterator + offset out of range"

I start with C ++. The teacher recently told us. vector :: reserve () and vector :: resize () have a similar function. But lately I have come across a strange question. Any help appreciated.

The problem is that:

struct SumStruct {
int operator ()(int v1, int v2) {
    return v1 + v2;
}
};
void test5()
{
vector<int> srcVec0;
srcVec0.push_back(3);

vector<int> srcVec1;
srcVec1.push_back(8);

vector<int> dstVec;
//use resize ok.
//dstVec.resize(2);
dstVec.reserve(2);
transform(srcVec0.begin(), srcVec0.end(), srcVec1.begin(), dstVec.begin(), SumStruct());

for_each(dstVec.begin(), dstVec.end(), [](const int & value) { cout << setw(4) << value; });
}

The problem is that. If you use dstVec.resize (2) ok, use dstVec.reserve (2) crash, info like this ("vector iterator + offset out of range").

I have google like

Choosing between vector :: resize () and vector :: reserve ()

Is the statement "vector iterator + offset out of range" useful?

0
source share

All Articles