gpt4 book ai didi

c++ - 是否可以在 cpp20 中创建范围 vector

转载 作者:行者123 更新时间:2023-12-05 01:03:23 26 4
gpt4 key购买 nike

假设我有一个 vector<vector<int>> .我想使用 ranges::transform以这样的方式,我得到了

vector<vector<int>> original_vectors;
using T = decltype(ranges::views::transform(original_vectors[0], [&](int x){
return x;
}));
vector<int> transformation_coeff;
vector<T> transformed_vectors;
for(int i=0;i<n;i++){
transformed_vectors.push_back(ranges::views::transform(original_vectors[i], [&](int x){
return x * transformation_coeff[i];
}));
}

目前在 C++ 中是否可以进行这种转换或类似的转换?

我知道可以简单地存储 transformation_coeff ,但在每一步都应用它很不方便。 (这将重复多次,因此需要在 O(log n) 中完成,因此我无法明确应用转换)。

最佳答案

是的,您可以有一个范围 vector 。您的代码中的问题是您在 using 语句中使用了临时 lambda。因此,您稍后插入 vector 中的项目类型与 T 不同。您可以通过先将 lambda 分配给变量来解决它:

vector<vector<int>> original_vectors;
auto lambda = [&](int x){return x;};
using T = decltype(ranges::views::transform(original_vectors[0], lambda));
vector<T> transformed_vectors;
transformed_vectors.push_back(ranges::views::transform(original_vectors[0], lambda));

关于c++ - 是否可以在 cpp20 中创建范围 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74325702/

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