我有一个 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/