java.util.function.Supplier 在 C++ 中的等价物是什么?

2023-12-10

例如,我有以下 Java 代码:

public class Main {
  public static void main(String[] args) {
    System.out.println(maker(Employee::new));
  }

  private static Employee maker(Supplier<Employee> fx) {
    return fx.get();
  }
}

class Employee {
  @Override
  public String toString() {
    return "A EMPLOYEE";
  }
}

C++ 的等价物是什么?


供应商是一个不带参数并返回某种类型的函数:您可以用标准::函数:

#include <iostream>
#include <functional>
#include <memory>

// the class Employee with a "print" operator

class Employee
{
    friend std::ostream& operator<<(std::ostream& os, const Employee& e);
};

std::ostream& operator<<(std::ostream& os, const Employee& e)
{
    os << "A EMPLOYEE";
    return os;
}

// maker take the supplier as argument through std::function

Employee maker(std::function<Employee(void)> fx)
{
    return fx();
}

// usage

int main()
{
    std::cout << maker(
        []() { return Employee(); }
            // I use a lambda here, I could have used function, functor, method...
    );

    return 0;
}

我在这里没有使用指针,也没有使用 new 运算符来分配 Employee:如果你想使用它,你应该考虑像这样的托管指针std::unique_ptr:

std::unique_ptr<Employee> maker(std::function<std::unique_ptr<Employee>(void)> fx)
{
    return fx();
}

// ...

maker(
    []()
    {
        return std::make_unique<Employee>();
    }
);

注意:然后应该修改对operator

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

java.util.function.Supplier 在 C++ 中的等价物是什么? 的相关文章

  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • Django admin - 覆盖已经注册的模型

    我需要覆盖django eav应用程序管理类 在eav admin py型号已注册 admin site register Value 我需要添加列表显示到这个模型 我知道修改已安装的应用程序代码是不好的做法 所以我需要覆盖它 但是 不知道
  • EF5 Code First 枚举和查找表

    我想定义一个供 EF5 使用的枚举以及相应的查找表 我知道 EF5 现在支持枚举 但开箱即用 它似乎只在对象级别支持此功能 并且默认情况下不会为这些查找值添加表 例如 我有一个 User 实体 public class User int I
  • 选择类别后勾选子类别

    我有一个过滤器框图标 单击时会打开一个包含类别和子类别的对话框 如下 在此处输入图像描述 1 1 我想这样做 以便当用户检查一个类别 在我的例子中是一个国家 时 所有子类别 在我的例子中是一个城市 都会自动检查 是的 从数据库搜索的角度来看
  • Primefaces 组件 CSS 定制

    正如我在 primefaces 文档中看到的那样 1 To change the font size of PrimeFaces components globally use the ui widget style class An ex
  • 如何缓存 Firebase 存储下载的图像

    我正在开发一个应用程序 我需要缓存图像 以便我可以在用户离线时检索它们 并且在用户关闭并重新打开应用程序后也应该可以访问它们 我需要类似的东西 FirebaseFirestoreSettings setPersistenceEnables
  • 配置更改后或启动这些操作的活动被破坏后,SQLite CRUD 操作的预期行为是什么?

    我正在重构我前段时间制作的一个应用程序 当时我刚刚迈入 Android 最简单的方法就是避免方向更改 对于几乎所有的 CRUD 操作 我都使用AsyncTask类 没有实现内容提供程序或使用片段 现在我做了一些改变 I use Fragme
  • 使用 Rcpp 属性允许 C++ 常量作为默认函数参数

    我在 R 包中使用 rcpp 创建了一个 cumsum 函数 它将对向量进行累积求和 直到达到用户定义的上限或下限 然而 如果希望将累积和限制在上方 则用户仍必须指定下限 Example a c 1 1 1 1 1 1 1 如果我想高潮a上
  • 在 UI 元素上方的特定位置显示弹出按钮

    我有 gridView 它的项目非常简单 每个 gridViewItem 上都有按钮 在此按钮上单击我想显示一个与 gridViewItem 内容相同的浮出控件 但也显示更多数据 这很简单 但我想将弹出窗口放置在 gridViewItem
  • 类型转换器不适用于 @Query 中的集合

    我有一个名为 Events 的实体 其定义如下 Entity tableName Events data class Event PrimaryKey val id Long val name String val venues Set
  • Python:定义具有依赖属性的类

    我的目标是编写一个可用于计算设备所有属性的类 import numpy as np class pythagoras def init self a None b None c None self a a self b b self c c
  • jQuery .each 中的 setTimeout() 问题

    以下代码将无法正常工作 我尝试过不同的变体并到处搜索但没有运气 i 1 var timer new Array jQuery a each function i timer i setTimeout jQuery this remove i
  • C++:调用临时对象的构造函数

    假设我有以下内容 int main SomeClass return 0 如果没有优化 SomeClass 构造函数将被调用 然后它的析构函数将被调用 对象将不复存在 然而 根据 IRC 频道 如果编译器认为 SomeClass 构造函数
  • Gstreamer 的 OpenCV 3.0.0 错误

    我刚刚按照本教程安装了 OpenCV 3 0 http rodrigoberriel com 2014 10 installing opencv 3 0 0 on ubuntu 14 04 我在安装过程中没有遇到任何错误 但是 当我尝试运行
  • 如何使用 AJAX 上传文件而不使用 multipart?

    我的应用程序允许用户上传的唯一文件是图像 并且它们始终作为表单中的唯一输入字段上传 因此 多部分是不必要的 并且我可以在没有多部分解析器的情况下更轻松地使用该文件 如何使用 AJAX 和 vanilla Javascript 在不使用分段的
  • 如何在通过Spark生产消息的Kafka中均匀分布数据?

    我有一个将数据写入 Kafka 的流作业 我注意到其中一个 Kafka 分区 3 比其他分区获取更多的数据 partition messages earlist offset next offset 1 166522754 58616033
  • std::getline 用于 ifstream 但使用 char* 而不是字符串 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想将 getline 函数与char 我不想使用std string因为我有一
  • 为什么要在 POST 请求上要求 CSRF 令牌?

    我的理解是 CSRF 可以防止攻击者使用 img 标签让受害者的浏览器发送一个请求 该请求将使用会话 cookie 进行身份验证 鉴于 img 总是使用 GET 请求而不是 POST 提交 那么为什么需要在 POST 请求中要求 CSRF
  • fileInput 中进度条的颜色 -- Shiny

    我正在尝试更改 Shiny 中 fileInput 小部件中上传进度条的颜色 我是一个有点闪亮的新手 在互联网上搜索过但没有结果 有任何想法吗 这是一个示例应用程序 我使用 CSS 将进度条的颜色设置为绿色 ui lt fluidPage
  • 动态循环 htmlwidgets 并为 RMarkdown 添加 knit 格式

    我正在尝试动态创建和循环htmlwidgets例如DT plotly or rbokeh生成自动针织报告 有没有办法添加knitr格式化 例如tabset 进入tagList这个 github 问题中概述的方法https github co
  • java.util.function.Supplier 在 C++ 中的等价物是什么?

    例如 我有以下 Java 代码 public class Main public static void main String args System out println maker Employee new private stat