调整原子向量的大小?

2024-01-26

如何调整原子向量的大小?

例如,以下代码无法编译:

#include <iostream>
#include <vector>
#include <atomic>

int main()
{
    std::vector<std::atomic<int>> v;
    v.resize(1000); // Problem here!
    v[0] = 1;
    return 0;
}

Error:

In file included from /usr/local/gcc-4.8.1/include/c++/4.8.1/vector:62:0,
                 from main.cpp:2:
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_T1*, _Args&& ...) [with _T1 = std::atomic<int>; _Args = {std::atomic<int>}]’:
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_uninitialized.h:75:53:   required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<std::atomic<int>*>; _ForwardIterator = std::atomic<int>*; bool _TrivialValueTypes = false]’
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_uninitialized.h:117:41:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = std::move_iterator<std::atomic<int>*>; _ForwardIterator = std::atomic<int>*]’
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_uninitialized.h:258:63:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = std::move_iterator<std::atomic<int>*>; _ForwardIterator = std::atomic<int>*; _Tp = std::atomic<int>]’
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_uninitialized.h:281:69:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = std::atomic<int>*; _ForwardIterator = std::atomic<int>*; _Allocator = std::allocator<std::atomic<int> >]’
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/vector.tcc:556:42:   required from ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::atomic<int>; _Alloc = std::allocator<std::atomic<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_vector.h:667:41:   required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = std::atomic<int>; _Alloc = std::allocator<std::atomic<int> >; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’
main.cpp:8:17:   required from here
/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_construct.h:75:7: error: use of deleted function ‘std::atomic<int>::atomic(const std::atomic<int>&)’
     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
       ^
In file included from main.cpp:3:0:
/usr/local/gcc-4.8.1/include/c++/4.8.1/atomic:601:7: error: declared here
       atomic(const atomic&) = delete;
       ^

你不能...

A std::atomic<T> http://en.cppreference.com/w/cpp/atomic/atomic既不是可复制/移动构造的,也不能分配一个std::atomic<T>给另一个人;这意味着它没有使用要求std::vector<...>::resize http://en.cppreference.com/w/cpp/container/vector/resize(size_type).

23.3.6.2vector构造函数、复制和赋值 [vector.const]

void resize (size_type sz);

Requires: T应可复制插入*this.

Note: std::vector::resize (size_type sz, T const& init) isn't applicable either since that requires T to also be MoveInsertable.


拟议决议

您将需要使用其他一些集装箱式这不需要已经构建的数据moved, copied, or 复制/移动指定的,在修改已存储在其中的元素时。

您还可以定义一个包装器std::atomic伪造复制/移动/分配,但实际上只是浅读/写底层的值atomic.

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

调整原子向量的大小? 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • WPF 从主线程以外的其他线程截屏

    我有一个线程用于侦听 WPF 应用程序的命令 如果 WPF 应用程序收到截取屏幕截图的命令 则任务将移交给 screenshotService 我在互联网上的某个地方找到了一些代码来截取屏幕截图 似乎可以工作 但我还没有想清楚 我无法从另一
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 不精确浮点常数的警告

    诸如 为什么 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 8 不是 让我想到 最好让编译器警告浮点常量 它舍入到二进制浮点类型中最接近的可表示形式 例如 0 1 和 0 8 以基数 2 浮点舍入 否则它们需要无限量的
  • 如何编译 GnuTLS

    我尝试在 Centos 6 2 上多次编译 GnuTLS 库 但没有成功 这些是步骤 我下载了荨麻2 4 root localhost opt wget http www lysator liu se nisse archive nettl
  • AngularJS 模板。内部JS不执行

    我有很多模板html页面 其中包含js代码 当我的 RouteProvider 加载此模板之一时 JS 不会执行 我不想使用 eval 我可以在外部 js 文件中编写代码并使用 requireJS 但我不知道如何使用 requireJS 停
  • JSON 数组结构变体

    以下是 3 种 JSON 数组结构格式 第一个是 JSON org 上概述的 是我熟悉的 格式 1 People name Sally age 10 name Greg age 10 第二个是命名数组元素的细微变化 我个人并不关心它 你不在
  • 如何在 Eclipse 中包含 javax.jms.* ?

    我正在尝试使用 eclipse 实现 JMS 但是当我尝试保存代码时 它表明javax jms cannot be resolved并且有no suggestions以及它推荐的 我怎样才能包含它并使用它 当我谷歌搜索时 我发现 javax
  • 如何找出我的控制台应用程序正在哪个目录中运行?

    如何找出我的控制台应用程序在 C 中运行的目录 要获取 exe 文件所在的目录 AppDomain CurrentDomain BaseDirectory 获取当前目录 Environment CurrentDirectory
  • Meteor JS 无法对数据进行排序

    我的主体中有一个按钮 单击该按钮时 应按降序排序 当我这样做时 什么也不会发生 我相信我的代码是正确的 但也许我遗漏了一些东西 这是js Tasks new Mongo Collection tasks Template body even
  • 如何使用 pdf.js 渲染 pdf 文件?

    我创建了一个 html 文件 内容如下索引 html
  • 使用 document.getElementById 更改“id=”的值

    这是正确的方法吗 a href class btn load add a a href here a 如
  • 重新加载 React Router 应用程序时出现 404 错误

    当我在本地服务器上重新加载我的应用程序时 一切都很好 但是当我在 gh pages 上托管时重新加载页面时 出现 404 错误 它不会在主页上执行此操作 但会在其他两个页面上执行此操作 这是否与远程托管有关 我对 React Router
  • Swift CoreBluetooth:CentralManager 应该在单独的线程中运行吗?

    现在我在主线程中运行所有内容 到目前为止 我只注意到 UI 变得有点滞后的多次中的一次 我想知道 utilizint CoreBluetooth 库在并发方面的一般做法是什么 您能否提供一些示例 具体应该在其他队列中运行什么 如果有的话 我
  • MQTT 连接在 Node 中工作,但不能作为 ReactJS 组件

    当我在 nodeJS 中运行它时 我有这个 mqtt 连接工作正常 但是当我将它移动到反应组件中时 我收到此错误 WebSocket 握手期间出错 net ERR CONNECTION RESET 我读过这是由与这里的默认端口有关的事情引起
  • J2ME 软键包装器

    阅读一些文章 告诉我软键因设备而异 有人说 6 或 21 表示左软键 7 或 22 表示右软键 鉴于这种情况 是否有任何好的包装器或功能或最佳实践来正确处理它 如果不适用于所有设备 那么支持大多数设备的最佳方式是什么 有轻微的黑客攻击或根本
  • Await 阻塞 UI 线程,网络相关

    我的 Windows 应用商店应用程序中有这段代码 我在其中处理按钮单击 但不知何故 当我在极少数情况下单击此按钮时 用户界面会冻结 当我连接到比我通常连接的网络更远的 Wi Fi 网络时 通常会发生这种情况 考虑到我从互联网上下载了 RS
  • 我应该如何为回合制多人 iPhone 棋盘游戏构建数据库和 API 服务器? (考虑nodejs、mongo、couch等)

    我正在为 iPhone 以及最终的 Android 开发一款回合制棋盘游戏 我正在使用 Appcelerator Titanium 来开发它 我的多人游戏设计类似于 Words With Friends 用户准备好后轮流进行 然后对手的游戏
  • 在不使用任何框架的情况下用 Ruby 完成 Web 应用程序 - 有多难?陷阱? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是一个 Ruby 菜鸟 这个社区中有人编写过没有任何框架的 Ruby 应用程序吗 编辑 我的目标是自己写一篇 告诉我们您的经历 有多
  • 无法迭代 JSON 数组

    我有一个 api 在 NODEJS 中 响应 它返回一个数组 res json friends id 7795239 username janesmith id 1363327 username johnsmith 但是 当我想在发送此响应
  • 为什么 Azure AD 的“请求 API 权限”中禁用了“应用程序权限”?

    我正在尝试授予控制台应用程序调用 Azure AD 中的 API 的权限 当我转到 添加权限 时 应用程序权限 显示为灰色 我只能选择 委派权限 我的理解是应用程序权限适用于控制台应用程序 因为它在后端运行并且用户不登录它 从 应用程序权限
  • jQuery find - 它返回元素的顺序是什么?

    我一直在使用 jQueryfind方法并且非常有用 然而 我遇到了一个例子 其中find似乎是在重复内容 并且没有按照文档中出现的顺序返回元素 我不确定 find 是否应该这样做 我对此表示怀疑 但是 它找到的元素不应该有重复并且显示错误的
  • 调整原子向量的大小?

    如何调整原子向量的大小 例如 以下代码无法编译 include