1
我有一个std :: vector X的std :: vector,例如,在C++中为double。复制std :: vector但将lambda应用于每个元素
如何将X转换为int的std :: vector Y,使得X [i] .size()== Y [i]适用于所有可接受的索引i?
std::vector< std::vector<int> > X;
...
/* What I want to do should look as follows */
std::vector<int> Y = std::copy_and_transform(X, lambda_to_get_size);
当然,这可以用一个循环来实现,但在C++ 11我们想用lambda表达式来代替。我还没有在std :: algorithm中找到类似的东西。标准工具似乎只给出了改变原始矢量的变换,并且不允许改变数据类型。
问题是标签的[标签:C++ 11],所以我会在拉姆达变化'常量auto'的东西复杂化('decltype(X)::为const_reference '或别的东西) – Zereges
@Zereges谢谢!明确写入类型也有效:) – Rakete1111
@Zereges,我不同意Google C++开发团队在这里列出的原因:https://google.github.io/styleguide/cppguide.html#auto Stack Overflow是一个教育网站,并显示完整的类型帮助清晰。我担心'auto'是一种拐杖,不会考虑发生了什么事情,并且过度使用/“滥用”的时机已经成熟。 –