繁体   English   中英

std::transform 中的意外行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM