我是C ++的新手。最近,老师告诉我们.vector :: reserve()和vector :: resize()有类似的功能。但最近,我遇到了一个奇怪的问题。感谢任何帮助。< / p>
问题在于:
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; });
}
问题在于。 如果您使用dstVec.resize(2)确定,请使用dstVec.reserve(2)crash,info as(“vector iterator + offset out of range”)。 < / p>
我喜欢谷歌
Choice between vector::resize() and vector::reserve()
Is “vector iterator + offset out of range” assertion useful at all?