从转换后的容器元素创建离散分布
Create a discrete distribution from transformed container elements
假设我们有一个std::vector<T> v
,T
是一个具有成员函数U T::f() const
的类,其中U
可转换为double
。我想创建一个std::discrete_distribution<> d(/* v[0].f(), ..., v[v.size() - 1].f() */)
。这是否可以在不创建包含v[0].f(), ..., v[v.size() - 1].f()
值的新容器的情况下
像boost::transform_iterator
这样的东西可以做到这一点。您只需要从矢量的迭代器中创建它们。
如果可以向T
添加一个operator double
,则可以f()
该返回值,然后使用std::discrete_distribution
的迭代器构造函数,例如
struct Foo
{
operator double() const { return f(); }
double f() const { return 1.0; }
};
int main()
{
std::vector<Foo> foo(10);
std::discrete_distribution dd{foo.begin(), foo.end()};
}
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建没有特定定义的随机分布?uniform_int_distribution是从其他类继承的吗?
- 从转换后的容器元素创建离散分布
- C++:创建1000次唯一的随机分布,在任何分布中都没有重复的数字
- 在 c++ 中创建具有指数分布的随机数(可视化标准)
- 从列表中创建离散分布C++
- 如何创建一个在单独的方法中工作的c++随机正态分布
- 我是否应该保留随机分布对象实例,或者我可以总是重新创建它
- 创建自定义的交互离散进化分布