创建指向向量中元素的指针>

2024-03-13

如果我想要一个指向 int 向量向量中的元素的指针,我会写:

vector<vector<int>> a (5);
int* p1 = a[4].data();

但是,当我编写以下内容时,它不适用于 bool 向量的向量(为什么?):

vector<vector<bool>> b(5);
bool* p2 = b[4].data();

编译器输出以下错误消息:

Semantic issue: Error: Cannot initialize a variable of type "bool*" with an rvalue of type "void".

std::vector<bool>不幸的是,这是一种专门化,可以通过为每个元素仅使用一点来节省空间。这不能保证,但有可能发生。

当这种情况发生时,意味着不可能使用指向元素的指针(C++ 中对象的最小大小是一个字节),并且还有许多其他细节std::vector不为std::vector<bool>.

只是不要使用它......如果您需要位打包,请自己实现它(至少您知道以可移植的方式获得什么),如果您不关心位与字节的保存,只需使用std::vector<unsigned char>相反(这是一个真正的std::vector).

std::vector<bool>专业化基本上是 C++ 的一个错误,它没有任何意义的用途。不提供任何保证优势并可能在将来产生问题(例如,即使对于当前不需要适当的标准迭代器的代码,也可能是代码需要演变为需要它们,并且如果您使用vector<bool>那么你就注定了)。

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

创建指向向量中元素的指针> 的相关文章

  • 如何使用 ASP.NET MVC 进行 HTTP 调用?

    我正在尝试做的事情 我试图练习进行 HTTP 调用 如果这就是它的名字 来自一个简单的 ASP NET MVC Web 应用程序 为此 我尝试从以下位置获取天气详细信息打开天气地图 http openweathermap org appid
  • 为什么在 C# 中成员初始值设定项中不允许这样做,但在 VB.Net Me 中允许

    我正在将 VB Net 应用程序转换为 C 并注意到在 VB Net 代码中 有一个私有成员变量 它是使用Me像这样 Private m ClassA As New MyCollection Of ClassA Me 当我将其转换为 C 代
  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • 同步执行异步函数

    我对此主题进行了大量搜索 并且阅读了本网站上有关此主题的大部分帖子 但是我仍然感到困惑 我需要一个直接的答案 这是我的情况 我有一个已建立的 Winform 应用程序 但无法使其全部 异步 我现在被迫使用一个全部编写为异步函数的外部库 在我
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • 隐式方法组转换陷阱

    我想知道为什么给定代码的输出 在 LinqPad 中执行 void Main Compare1 Action Main Dump Compare2 Main Dump bool Compare1 Delegate x return x Ac
  • C++ 中的单例和抽象基类

    最近我遇到了关于实现 Singleton 但涉及抽象基类的问题 假设我们有这样的类层次结构 class IFoo it s ABC class Foo public IFoo 我们的单例类定义如下 template
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • C 中“for”循环中的两个变量

    我正在编写一些代码 需要在其中使用两个变量for环形 下面的代码看起来没问题吗 它确实给了我预期的结果 for loop 1 offset loop 2 offset 2 loop 1 gt offset 190 loop 2 lt 190
  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • 为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

    include
  • System.diagnostics.process 进程在托管后无法在 IIS 上运行?

    我正在尝试从网络应用程序安装 exe 当我在本地运行应用程序 从 asp 开发服务器 时 它安装正确 但当我托管在 IIS 上时 它不起作用 我在asp net页面的Page load方法上编写了这段代码 想要在客户端计算机上安装Test
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN
  • 致命错误 C1001:编译器中发生内部错误(编译器文件“msc1.cpp”,第 1325 行)

    当我编译代码时 错误指向以下类 该错误在两行上突出显示 如下所示 tm validFrom tm validUntil struct t SslCertData final struct t Contact TCHAR Organizati
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对

随机推荐

  • XPATH——由查询定义的结果顺序

    我有一个像这样的 xpath 表达式 element attr a element attr b element attr c 这是一个 或 语句 那么 我是否可以创建一个表达式来保证结果按照查询中的顺序出现 即使元素在文档中以不同的顺序出
  • Django(鼻子)测试加速,reuse_db 不起作用

    我正在使用 django nose 在 django 1 4 中运行单元测试 TEST RUNNER django nose NoseTestSuiteRunner 创建数据库需要很长时间 所以我发现把它放在settings py中 os
  • Symfony2 - 为什么超级管理员也需要投票

    我注意到 即使是超级管理员用户也会征求我的选民的意见 它是否按预期工作 如果是的话 我认为SuperAdmin的哲学是他们系统地拥有所有权利 这样我们就不必一一授予他们每个权限 既然如此 为什么不向所有选民授予访问权呢 我是否总是必须把 i
  • 加载程序集后执行的 C# 方法

    我编写了一些 C 类库 我想使用 Ninject 为我的类提供依赖注入 类库是否可以声明一些在每次加载类库时执行的代码 方法 我需要它来定义 Ninject 的绑定 听起来您正在寻找 C 的 DllMain 的等效项 在 C 中没有办法做到
  • 如何将多个参数作为单个向量传递给函数?

    我使用六个参数创建了以下函数 nDone lt function under strike ttoe vol rf dy pnorm log under strike rf dy vol 2 2 ttoe vol ttoe 0 5 nDon
  • method="post" enctype="text/plain" 不兼容?

    当我使用
  • 使用yarn berry时将.yarn目录提交到git

    在纱线 浆果 的下一个版本中manual https yarnpkg com getting started install指出应该只提交创建的名为 yarn 但是如果您对yarn使用多版本设置 则该目录包含该文件releases yarn
  • 根据ace编辑器实例中字符的长度设置宽度

    我正在开发一个使用 contenteditable 属性创建自定义富文本编辑器的项目 在这个富文本编辑器中 我想插入单行 ace 编辑器实例 其宽度将根据其中的字符数设置 为了将 ace 编辑器实例限制为单行 我处理了 Enter 键事件
  • 如何使用通配符投影别名?

    一旦我做了一个join A by id B by id 我得到一个带有字段的别名A f B f 有没有办法只将其投影到A fields C join A by id B by id D filter C by B n lt 1000 E f
  • 在大型文本文件中搜索字符串 - 分析 python 中的各种方法

    这个问题已经被问过很多次了 花了一些时间阅读答案后 我做了一些快速分析来尝试前面提到的各种方法 我有一个600 MB文件与600万字符串行 DMOZ 项目的类别路径 每行的条目都是唯一的 我想要load文件once 不停寻找用于数据中的匹配
  • 如何撤消 SQL Server UPDATE 查询?

    在 SQL Server Management Studio 中 我执行了以下查询 不幸的是 我忘记取消注释WHERE clause 更新了 1647 行 而不是 4 行 如何撤消最后一条语句 Unfortunately I ve only
  • 完成活动后如何取下键盘?

    我有一个用户在其中输入的活动 然后单击 确定 按钮 完成后 活动关闭并返回到旧活动 但软键盘仍然在屏幕上 我试过了android windowSoftInputMode stateHidden and getWindow setSoftIn
  • 阻止直接 URL 访问返回部分视图的控制器?

    如果有一个名为 UsersController 的控制器 其操作如下 public ActionResult ActiveUsers IQueryable
  • 如何获取数组值作为curl php请求的返回值?

    由于我是 PHP 新手 所以我很难使用 PHP 问题是我没有从curl 请求中获得任何返回值 我正在访问一个远程文件 其中包含以下代码 测试 php test gt getCall public function getCall var a
  • 为什么 easy_install 适用于某些 Windows 二进制文件?

    背景 Windows 默认情况下不包含编译器 安装编译器 或许还需要配置 Python 来使用它 是一项足够复杂的任务 许多开发人员都避免这样做 为此 许多具有二进制依赖项的包可以作为包含二进制文件的预编译 Windows 可执行文件提供
  • 如果未找到元素,C# 中的 XmlSerializer 反序列化是否会失败?

    我正在使用 XmlSerializer 在 C 中将对象写入和读取到 xml 我目前使用的属性XmlElement and XmlIgnore操纵对象的序列化 如果我的 xml 文件缺少我需要的 xml 元素 我的对象仍然可以很好地反序列化
  • Python 中的方法参数[重复]

    这个问题在这里已经有答案了 假设我有这样的代码 class Num def init self num self n num def getn self return self n def getone return 1 myObj Num
  • 将特定线程绑定到特定处理器核心

    我在大学里谈过一些关于并行处理的内容 现在我正在努力提高它 我可以编写可以并行运行的代码 然后启动线程 但之后我就失去了对线程执行操作的控制 我想知道如何控制线程 例如将特定线程绑定到特定处理器核心 我对 C 最感兴趣 但我已经用 Java
  • BigQuery 重复数据删除和分区表

    我想在 BigQuery 中创建一个允许执行以下操作的视图 重复记录删除 将 PARTITIONTIME 公开为用于过滤的列 以允许分区修剪 我知道执行重复数据删除的建议查询是 SELECT EXCEPT row number FROM S
  • 创建指向向量中元素的指针>

    如果我想要一个指向 int 向量向量中的元素的指针 我会写 vector