是否有替换 C 风格 bool 数组的标准方法?

2024-01-15

在这段代码中

void legacyFunction(int length, bool *bitset)
{
    // stuff, lots of stuff
}

int main()
{
    int somenumber = 6;
    // somenumber is set to some value here

    bool *isBitXSet = new bool[somenumber];
    // initialisation of isBitXSet.

    legacyFunction(somenumber, isBitXSet);

    delete[] isBitXSet;
    return 0;
}

我想更换bool *isBitXSet = new bool[somenumber];通过类似的东西

std::vector<bool> isBitXset(somenumber, false);

但我做不到

legacyFunction(somenumber, isBitXSet.data());

because data()不存在于std::vector<bool>。而且我无法更改界面legacyFunction().

C 风格的 bool 数组有一个好的替代方案吗?


您可以使用std::unique_ptr<T[]> http://en.cppreference.com/w/cpp/memory/unique_ptr and std::make_unique http://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique:

int main()
{
    int somenumber = 6;
    // somenumber is set to some value here

    auto isBitXSet = std::make_unique<bool[]>(somenumber);    
    // initialisation of isBitXSet.

    legacyFunction(somenumber, isBitXSet.get());

    return 0;
}

或者,你可以“欺骗”std::vector通过创建你自己的bool包装:

struct my_bool { bool _b; };
std::vector<my_bool> v; // will not use `vector<bool>` specialization

如果您在编译时知道数组的大小,请考虑使用std::array http://en.cppreference.com/w/cpp/container/array.

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

是否有替换 C 风格 bool 数组的标准方法? 的相关文章

  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 为什么这两种不同的构造数组的方式会产生不同的行为?

    当我以两种不同的方式构造一个 2 元素数组时 例如a and b 当我将一个元素添加到内部数组之一时 我得到两个不同的结果 这也会发生在append 根据构建每个之后的输出 我希望它们完全相同 julia gt a 2 element Ar
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看

随机推荐

  • Meteor collection.insert回调问题

    根据 Meteor 文档 collection insert doc callback callback功能 选修的 如果存在 则使用错误对象作为第一个参数和 id 作为第二个参数进行调用 然后往下 在服务器上 如果您不提供回调 则插入块直
  • Unity单例代码

    我是新来的Unity http unity codeplex com 我正在尝试编写一些 Unity 逻辑来初始化和注册 解析 Email 对象的单例实例 以便它可以在多个其他对象中使用 下面的一个示例是 OperationEntity 因
  • Microsoft.ML 和 Xamarin

    Microsoft ML 在 Xamarin 中工作吗 我已经关注了许多教程和视频https dotnet microsoft com learn ml dotnet https dotnet microsoft com learn ml
  • 如何使用JAVA从html页面获取表格

    我正在开发一个项目 尝试从互联网获取财务报表并在 JAVA 应用程序中使用它们来自动创建比率和图表 我正在使用的网站使用登录名和密码才能进入牌桌 标签是 TBODY 但 html 中还有另外 2 个 TBODY 如何使用 java 将表打印
  • Matplotlib - 添加与轴底部对齐的标签

    我想向图表上的垂直线添加标签 本例中为洋红色线 TEXT TO GO HERE 问题是我不知道 Y 轴的最小值 因为该轴是自动的 并且 text 函数需要 x 和 y 值 我希望能够将文本与图的底部对齐 或者找到最小 Y 轴值 在本例中 m
  • 如何在应用程序中的所有类之间共享数组?

    我想共享一个数组 所有类都可以 获取 和 更改 该数组内的数据 类似于全局数组或多路访问数组 这如何通过 ActionScript 3 0 实现 有几种方法可以解决这个问题 一种是使用全局变量 如 unkiwii 的答案中所建议的 但这在
  • 在终端中运行每个命令后看到“致命:拒绝将 HEAD 指向 refs/ 之外”

    我已经几周没有使用终端了 在运行 Brew Upgrade 来升级 更新我的所有软件包后 我开始在运行每个命令后看到 致命 拒绝将 HEAD 指向 refs 之外 我不太熟悉终端或 Git 所以我不知道这意味着什么 请提供一些建议 场景来解
  • 错误:当我用 gradle 中的实现替换编译时(依赖项)

    我将 Android Studio 从 3 0 1 更新到 3 1 0 但更新后 当我构建我的项目时 它显示2 警告 1 用实现代替编译 编译支持将于 2018 年底结束 2 将 testCompile 替换为 testImplementa
  • 火花作业卡桑德拉错误

    每次我使用 cassandra 连接器在 Spark 中运行 scala 程序时都会收到此错误 Exception during preparation of SELECT count FROM eventtest simpletbl WH
  • 如何将 useRef 与 Typescript/Formik 一起使用?

    我正在通过一个ref属性到我的自定义 FieldInput 中 我使用它来验证表单的 Formik 然而 它给出了一些 Typescript 错误 例如 在我的函数中 const handleSubmitForm values FormVa
  • 错误:找不到模块“index”\n需要堆栈:\n- /var/runtime/index.mjs

    我正在尝试通过 CDK 部署在打字稿中实现的 lambda 我能够成功部署 lambda 但是当我测试它时 出现以下错误 errorType Runtime ImportModuleError errorMessage Error Cann
  • 将图像作为二进制数据写入文本文件 C#

    我需要创建一个文件 将图像作为文本嵌入到某些记录中 我在将图像写入文本时遇到一些问题 我正在做的是将图像作为字节数组从 SQL 数据库 图像类型 收集 然后通过遍历每个字节并将该字节的 ASCII 等效项写入该文件 将该图像写入文本文件 在
  • 尝试比较两个分布

    我在互联网上找到了这段代码 它将正态分布与不同的学生分布进行了比较 x lt seq 4 4 length 100 hx lt dnorm x degf lt c 1 3 8 30 colors lt c red blue darkgree
  • 有人将 WPF 用于真正的 LOB 应用程序吗?

    有人将 WPF 用于真正的 LOB 应用程序吗 我们都看过 WPF 的巧妙演示 展示了映射到 3D 元素的视频 这些看起来很棒 但构成大多数开发人员努力的业务线应用程序的现实世界又如何呢 WPF 仅仅是为了美观吗 当我们讨论它时 聪明人正在
  • 将文本框中的数据显示到 wpf 中的列表视图中

    我有一个 C 项目 XAML 代码
  • 如何阻止无人值守升级升级我自定义安装的 Debian 软件包?

    我自定义编译了我自己的 ffmpeg 版本 并从此包中制作了一个 deb 文件 封装说明如下 control txt Package ffmpeg Version 4 3 ubuntu1804 hwaccel cuda 20200806 A
  • 当用户按回键时取消正在进行的连接

    我一直在搜索这个问题 但没有找到我的具体问题 我明白那个AskyncTask可以使用取消 cancel true 但这仅当我有一个可以检查值的循环时才会发生isCanceled 但我的问题是 我怎样才能取消AsyncTask 即卡在http
  • SQL Server 按组累计总和

    我有一个以下格式的表 SQL Server 2005 dummy id 注册日期 item id 数量 价格 我想添加一个新列 累计 它按 date registered 计算每个 item id 订单的累计总计 如下所示 dummy id
  • 使用 .ui 表单自动装配时 QPushButton.clicked() 会触发两次

    考虑这个设置 主要脚本 main py import sys from PyQt5 import uic from PyQt5 QtCore import pyqtSlot from PyQt5 QtWidgets import QAppl
  • 是否有替换 C 风格 bool 数组的标准方法?

    在这段代码中 void legacyFunction int length bool bitset stuff lots of stuff int main int somenumber 6 somenumber is set to som