gpt4 book ai didi

c++ - 复制 std::vector 但将 lambda 应用于每个元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:14 24 4
gpt4 key购买 nike

我有一个 std::vector X of std::vector of, say, double in C++.

我如何将 X 转换为 std::vector Y of int 使得 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 中没有找到类似的东西。标准工具似乎只提供更改原始 vector 且不允许更改数据类型的就地转换。

最佳答案

您可以使用 std::transform :

std::vector<int> Y;
std::transform(X.cbegin(), X.cend(), std::back_inserter(Y), [](const std::vector<int>& value) {
return value.size();
});

关于c++ - 复制 std::vector 但将 lambda 应用于每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44215219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com