将 C++ 向量初始化为随机值...快速

2024-02-28

嘿,我想尽可能快地做到这一点,因为它在我正在编写的程序中被多次调用,所以有没有比以下更快的方法将 C++ 向量初始化为随机值:

double range;//set to the range of a particular function i want to evaluate.
std::vector<double> x(30, 0.0);
for (int i=0;i<x.size();i++) {
    x.at(i) = (rand()/(double)RAND_MAX)*range;
}

编辑:修复了 x 的初始值设定项。


现在,这应该是really速度很快,因为循环不会执行。

就我个人而言,我可能会使用这样的东西:

struct gen_rand { 
    double range;
public:
    gen_rand(double r=1.0) : range(r) {}
    double operator()() { 
        return (rand()/(double)RAND_MAX) * range;
    }
};

std::vector<double> x(num_items);
std::generate_n(x.begin(), num_items, gen_rand());

编辑:这纯粹是一种微观优化,可能根本没有什么区别,但您可能会考虑重新安排计算以获得类似的结果:

struct gen_rand { 
    double factor;
public:
    gen_rand(double r=1.0) : factor(range/RAND_MAX) {}
    double operator()() { 
        return rand() * factor;
    }
};

当然,编译器很有可能已经这样做了(或类似的事情),但无论如何尝试一下也没有什么坏处(尽管它实际上只可能有助于关闭优化)。

Edit2:“sbi”(通常是这种情况)是正确的:通过最初保留空间,然后使用插入迭代器将数据放置到位,您可能会获得一些收益:

std::vector<double> x;
x.reserve(num_items);
std::generate_n(std::back_inserter(x), num_items, gen_rand());

和以前一样,我们正在进行如此微观的优化,我根本不确定我是否真的会这样做expect看看有什么不同。特别是,由于这一切都是通过模板完成的,因此很有可能大多数(如果不是全部)代码都是内联生成的。在这种情况下,优化器可能会注意到初始数据全部被覆盖,并跳过对其进行初始化。

然而,最后几乎是唯一真正真正的部分likely要产生显着的变化就是摆脱.at(i)。其他might,但随着优化的开启,我真的不希望他们这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C++ 向量初始化为随机值...快速 的相关文章

  • 自定义可视化 Web 部件属性 sharepoint

    我在 Visual Studio 2012 中创建可视 Web 部件属性时遇到问题 我被提及http msdn microsoft com en us library ee231551 aspx http msdn microsoft co
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 如何使用Task.WhenAny并实现重试

    我有一个创建多个基于 I O 的任务的解决方案 我正在使用Task WhenAny 来管理这些任务 但通常许多任务会由于网络问题或请求限制等原因而失败 我似乎找不到一个解决方案 使我能够在使用时成功重试失败的任务Task WhenAny 方
  • 如何以编程方式确定 C 中 int 数据的最大和最小限制?

    我正在尝试 K R 的练习 2 1 练习内容如下 编写一个程序来确定范围char short int and long变量 两者signed and unsigned 通过从标准标题打印适当的值并通过直接计算 如果计算它们会更困难 确定各种
  • c#Registry to XML无效字符问题

    我在尝试从注册表创建 XML 文件时遇到问题 在我的笔记本电脑 W7 64b 上它工作正常 生成了 xml 文件 但在另一台计算机 Xp 32b 上抛出异常 System ArgumentException 十六进制值 0x00 是无效字符
  • 从空白启动时 VSTO 功能区不显示解决方案

    如果我从 文件 新建项目 菜单创建一个新的 Excel 2013 和 2016 VSTO 加载项 项目 然后单击 项目 添加新项目 gt 功能区 可视化设计器 则一切正常 我启动了应用程序 我的功能区显示在 Excel 中 但是 如果我首先
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • 标准头文件中的 C 编译器错误 - 未定义的 C++ 定义

    我正在尝试编译 C 程序 但收到许多错误 这些错误是在标准 C 头文件 inttypes h stdio h stat h 等 中遇到的 错误的来源是以下未定义的常量 BEGIN DECLS END DECLS BEGIN NAMESPAC
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • 允许 .NET WebApi 忽略 DOCTYPE 声明

    我正在尝试通过 WebApi 方法将 XML 反序列化为对象 我有以下课程 XmlRoot IsNullable false public class MyObject XmlElement Name public string Name
  • 如何使用包含的转换的排名来比较两个标准转换序列

    include
  • 修改公共属性的访问修饰符是否是重大更改?

    如果我将公共属性的 setter 的访问修饰符从私有更改为公共 是否会导致引用它的其他程序集发生任何重大更改 UPDATE 这个问题是我 2012 年 1 月博客的主题 https ericlippert com 2012 01 09 ev
  • 什么是多重重继承?

    我将以下称为 多重重新继承 直接继承一个类一次 并通过继承其一个或多个后代来间接继承一次或多次 通过继承一个类的两个或多个后代来间接继承一个类两次或多次 我想知道它是否存在以及如何明确访问嵌入的子对象 1 Professional C 2n
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 组合框由于某种原因被链接

    我有以下代码来填充 3 个组合框 private void PopulateDDLs SqlConnection connection SqlCommand command SqlDataReader reader DataTable dt
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行
  • 你将如何开始自动化我的工作? - 第2部分

    后续这个问题 https stackoverflow com questions 2796128 how would you start automating my job 在经历了第一波进货 9 小时的复制 粘贴 后 我现在相信我已经满足
  • C++20 范围太多 |运营商?

    我在这段代码中使用 g 10 2 有谁知道为什么我最后收到编译器错误std views reverse on results3 include

随机推荐

  • Ubuntu 18.04 上的 JModelica

    你好 JModelica 社区 我已经成功在 CentOS 上编译 JModelica 但在 Ubuntu 18 04 上仍然失败 编译本身是成功的 但是运行 from pyjmi examples import cstr casadi c
  • 如何在Android Gradle配置中获取当前的buildType

    我想根据当前的 buildType 在 Android Gradle 项目中动态添加依赖项 我知道我可以在依赖项中指定 buildType http tools android com tech docs new build system
  • 如何在 Laravel 中使用旧输入进行重定向?

    我有一个登录模式 当用户登录身份验证失败时 我想使用以下命令重定向回此模式 错误消息 和旧的输入 控制器 if Auth Fail return Redirect to gt with error Username Password Wro
  • 在 python 中强制执行副作用

    是否有一种工具可以让您将函数 方法注释为 纯 然后分析代码以测试所述函数 方法是否没有副作用 在 Python 世界中 这个问题没有多大意义 因为对象对函数调用中发生的情况有很大的发言权 例如 你如何判断以下函数是否是纯函数 def f x
  • 如何在 Linux 上使用 grep 搜索包含 DOS 行结尾 (CRLF) 的文件?

    我想在 Linux 上使用 grep 搜索包含 DOS 行结尾的文件 像这样的东西 grep IUr color r n 上面的内容似乎与字面意思相匹配rn这不是我们想要的 其输出将通过 xargs 传送到 todos 以将 crlf 转换
  • 如何为 C++ 项目生成 VS 2017 的清单文件并确保其正常工作?

    我一直在寻找如何为 VS2017 的 C 应用程序生成清单文件 我见过一些东西VS2010 https www codeproject com Questions 629067 How to add a manifest file in m
  • 如何均匀改变Flutter中滑块的轨道高度?

    My code Padding padding const EdgeInsets symmetric horizontal 12 child SliderTheme data SliderTheme of context copyWith
  • 使用 mongoose.js 跟踪字段更改

    我试图找出使用 mongoose js 时跟踪字段更改的最佳方法 例如 每次name设置了对象上的字段 我想向该对象的历史记录 作为嵌入文档 添加一个新条目 看起来像 field name previous foo current bar
  • 使用 ggplot2 绘制 SpatialLinesDataFrame

    我想绘制一个 SpatialLinesDataFrame 调用ggplot有功能fortify 我使用时遇到的问题fortify是我的观点之间出现了不受欢迎的线条 我觉得和剧情顺序有关系 这是我的数据的示例 Coords lt matrix
  • UseStatusCodePagesWithReExecute() 不适用于 .NET Core 3.1

    I use UseStatusCodePagesWithReExecute如果应用程序出现问题 将用户重定向到错误页面 如果我的应用程序中发生错误 例如代码 500 我不会被重定向到 Home Error 如果我手动调用它 Home Err
  • 在body标签中加载外部CSS文件[重复]

    这个问题在这里已经有答案了 可能的重复 如果我将 css 文件放在 或 中 有什么区别 https stackoverflow com questions 1642212 whats the difference if i put css
  • MVC PartialView 中的多个表单在回发时返回 null,除了列出的第一个表单之外

    好的 我希望有人可以帮助我解决这个问题 提前致谢 我正在使用MVC4 我的 ContractsModel 包含 除其他外 ContractModel 列表 在我的部分视图中 我循环遍历列表 为每个列表创建一个表单 到目前为止 一切都很好 问
  • 如何注册Win8定期磁贴通知?

    我正在开发一个 Win8 UI App 以前称为 Metro 并尝试实现周期性 文档 http msdn microsoft com en us library windows apps hh779721 aspx对于不同的方法 第一次进行
  • 反应变化最小/最大范围+ 2个数据帧闪亮

    我的 Shiny 应用程序有一个问题 首先 我有两个dataframes其中有两个numeric列 number and number2 我也有动态用户界面sliderInput 闪亮的应用程序工作正常 直到 当我选择时Item数据框 选择
  • 如何将 UITableView 行重新排序限制为一个部分

    我正为这个问题碰头 谷歌却什么也没找到 我最终解决了这个问题 并想把它写在这里是为了下一个人 你有一个UITableView有多个部分 每个部分都是同质的 但整个表是异构的 因此 您可能希望允许对节内的行重新排序 但不允许across部分
  • 我是否需要定义巨大的 VPC 子网才能并行运行许多 Lambda 函数?

    我读到每个 AWS Lambda 调用都会获得自己的私有 IP 在 VPC 中运行时 这是否意味着如果我想要并行运行 50 000 个 Lambda 我需要它在具有 50 000 个可用私有 IP 的 VPC 子网中运行 简短 更新 答案
  • UICollectionView 的分页

    我使用 UICollectionView 创建了数据表视图 这是代码 class PanelViewController UIViewController var TableHeaderArray NSMutableArray var Ta
  • 如何在 C++ 11 中迭代 std::tuple [重复]

    这个问题在这里已经有答案了 我制作了以下元组 我想知道我应该如何迭代它 有tupl size 但是阅读文档 我不知道如何使用它 我也有搜索 但问题似乎存在Boost tuple auto some make tuple I am good
  • NetSqlAzMan vs AzMan vs (??????)

    我一直在尝试 从字里行间解读 NetSqlAzMan 项目的原始 和 或当前 动机 这是写的吗 Windows 授权管理器 AzMan 的适配器 NetSqlAzMan 中的方法只是将调用传递给 Windows 授权管理器 AzMan 但可
  • 将 C++ 向量初始化为随机值...快速

    嘿 我想尽可能快地做到这一点 因为它在我正在编写的程序中被多次调用 所以有没有比以下更快的方法将 C 向量初始化为随机值 double range set to the range of a particular function i wa