[英]Unexpected behaviour in std::transform
我有一个std::vector<float> vertices
,我想对其进行转换并将结果附加到向量上; 到目前为止,我已经这样做了:
std::transform(vertices.begin(), vertices.end(), std::back_inserter(vertices), [index = 0,&sideDim] (float ver) mutable{
return ver + 1;
});
但是对于每个新插入,我似乎都得到了-1.998397116e+18
的浮点值。 为什么是这样?
在前一行添加vertices.reserve(vertices.size()*2)
。
您的反向插入使您的迭代器无效并重新分配您正在读取的缓冲区。 所以你会得到垃圾。
您发布的代码也可能没有做您想做的事情,但这修复了发布的代码中的 UB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.