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;
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?
source
share