结构的离散结构
discrete_distrubution of struct
本文关键字:结构 更新时间:2023-10-16
我有一个实值的vector
:
vector<double> values;
和discrete_distribution
:
discrete_distribution<size_t> dis(values.begin(), values.end());
但现在我需要double
值的向量变成结构的向量:
struct Data
{
double value;
int index;
};
vector<Data> values;
如何在不将值复制到单独的vector
中的情况下构建相应的discrete_distribution
?
似乎可以使用以下重载(编号4)
template< class UnaryOperation >
discrete_distribution(std::size_t count, double xmin, double xmax,
UnaryOperation unary_op);
像这样。
std::discrete_distribution<int>
make_distribution(const std::vector<Data>& weights)
{
const auto n = weights.size();
const auto op = [&weights](double d){
const auto index = static_cast<std::size_t>(d - 0.5);
//std::cout << "weights[" << index << "].value == " << weights[index].value << "n";
return weights[index].value;
};
return std::discrete_distribution<int> {n, 0.0, static_cast<double>(n), op};
}
它应该起作用,但它是一个拼凑。
const double get_value(const Data & d) { return d.value; }
auto beg = boost::make_transform_iterator(values.begin(), get_value);
auto end = boost::make_transform_iterator(values.end(), get_value);
discrete_distribution<size_t> dis(beg, end);
(基于此答案)
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- C++概念:如何使用'concept'检查模板化结构的属性?