如果与back_inserter一起使用,我很难理解转换函数的行为。
#include <algorithm>
using namespace std;
int main()
{
vector<int> a{1,2,4};
transform(begin(a), end(a), back_inserter(a), [](auto e){ cout << e << "-" ;
return e;});
return 0;
}
在上面的程序中,我得到的输出为1-0-4。我不明白这个0即将到来吗? 请查看实时示例cpp.sh/6vpzk
答案 0 :(得分:0)
此代码在使用其迭代器对其进行迭代时执行vector::push_back
。 vector::push_back
使所有导致未定义行为的迭代器无效,这就是0
的来源(它可以是任何其他数字,因为行为是未定义的。)
您可能应该使用for_each
或循环范围。