vector :: reserve导致“矢量迭代器+偏移超出范围”

时间:2017-04-28 13:52:55

标签: c++ visual-studio vector

我是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?

0 个答案:

没有答案