运行时固定大小 std::vector ?

2024-04-17

性能在我的应用程序中至关重要

我需要类似的东西std::experimental::dynarray http://en.cppreference.com/w/cpp/container/dynarray,因此数组的大小在运行时决定。

所以我考虑使用包装类std::vector,提供其所有功能,但无法调用resize, reserve or push_back。简而言之,所有改变其大小的方法(如果我错过了其中一些,请提醒我)。

所以我开始写这门课:

CCVector.hpp:

template <typename T>
class CCVector{
public:
    CCVector(size_t size);
    T &operator[](typename std::vector<T>::size_type idx);
private:
    std::vector<T> v;
};

CCVector.cpp:

template<typename T>
CCVector<T>::CCVector(size_t size) : v(size){}
template<typename T>
T& CCVector<T>::operator[](typename std::vector<T>::size_type idx){
    return  v[idx];
}

但我认为我必须重新实施every的方法std::vector我需要的!例如begin, end, size等等,我不知道如何实现所有这些......此外,这对维护来说真的很糟糕:一旦我需要一个新方法std::vector我需要重新实现它CCVector.

所有这一切都是因为我想要在运行时固定大小的数组。在不使用非标准的情况下如何解决这个问题std::experimental::dynarray?


使用私有继承,然后使用using声明将您想要的名字引入您的班级。

template<class T>
class MyVector : private std::vector<T>
{
public:
    using std::vector<T>::end;
    // etc
};

(使用私有继承,您不会遇到向量没有虚拟析构函数的问题,这就是大多数人不喜欢从标准容器继承的原因)

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

运行时固定大小 std::vector ? 的相关文章

  • 获取 WSA 错误代码的格式化消息

    我在 win32 C 应用程序中使用winsock2 我将使用 MessageBox 显示可以通过调用 WSAGetLastError 检索的网络错误 我怎样才能做到这一点 我看到 FormatMessage 但我不明白如何使用它 例如 以
  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • Lambda、封闭变量、显示类、可序列化性和流行层

    我已经为 Compact Framework 实现了一个流行层 包括BinaryFormatter 类似序列化器 我希望能够在适当的情况下序列化编译器生成的类 这些类是由 lambda 和迭代器等产生的 这样如果 例如 lambda 及其封
  • 正确别名向量

    我无法在其他地方找到答案 所以我想我只需要问这个 我正在尝试获取向量 其中存储 int 指针 的别名 如下所示 void conversion Engine ENGINES The Engine class has a vector of
  • EWS 消息跟踪报告

    我一直在研究如何使用 EWS 从交换中获取消息跟踪报告 但似乎无法查明任何内容 我打算构建一个抓取日志文件的应用程序 但如果我可以通过 EWS 来完成它 那对我正在做的事情会更好 有任何想法吗 我终于能够为我的问题创建一个解决方案 我在 C
  • boost::unordered_map 是...有序的吗?

    我有一个 boost unordered map 但它看起来是有序的 给我一种压倒性的 你做错了 的感觉 为什么输出是这样的 我希望底层的哈希算法能够随机化这个顺序 include
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • 这个对象的内存会是什么样子?

    我想知道这个类 它的对象 的内存布局是什么样的 class MyClass string myString int myInt public MyClass string str int i myString str myInt i MyC
  • 如何存储生成的格式化 C 字符串

    这是一个新手问题 为了创建格式化的 C 字符串 我使用printf like int n 10 printf My number is i 10 但是 怎么样 int n 10 char msg My number is i 10 prin
  • 如何对具有无效值的属性使用 JSON.net 的默认值

    我正在使用 Newtonsoft JSON 库来反序列化来自 Web 服务的响应 问题是某些字段包含无效值 例如 一条记录上的一个字段包含一个 T 表示该字段应该是数字 我想做的是将无效字段的值设置为 null 或其他默认值 我的所有属性都
  • 使用 .NET Core Razor Pages 将文件下载到浏览器

    使用 ASP NET Razor Pages 我尝试将文件下载到浏览器 在页面 html 中 使用这样的链接效果很好 href DownloadableFiles testB csv download newname gt Download
  • 枚举和枚举类之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下两者之间的区别 enum Type1 type2 And enum class Type1 type2 我经常使用前者 可能太频繁而没有足够的封装 但我从未使用过第二个例子 Thanks enum A
  • cuda中有模板化的数学函数吗? [复制]

    这个问题在这里已经有答案了 我一直在寻找 cuda 中的模板化数学函数 但似乎找不到 在普通的 C 中 如果我调用std sqrt它是模板化的 并且将根据参数是浮点数还是双精度数执行不同的版本 我想要这样的 CUDA 设备代码 我的内核将真
  • 拦截C# HttpClient GetAsync

    我有一个 Web 项目 C MVC5 但没有 WebAPI 和一个简单的 HTTP REST 客户端 该客户端调用外部 REST 服务并获取 accessToken 等 我想检查所有 Get PostAsync 调用对 statusCode
  • 使用全局 Web API 过滤器属性进行 Unity 依赖注入

    参考这个CodePlex 统一文章 http unity codeplex com discussions 446780我能够使用 WebAPI 控制器获取过滤器属性 如下所示 MyFilterAttribute public class
  • Web 服务无法使用 GAC 中的类型创建类型错误

    遇到一个不寻常的问题时 我似乎喜欢做一些不常见的事情 我有一个复合控件 它检查给定的 Web 服务文件是否存在于我的应用程序的根目录中 如果不存在 它会在标记中创建带有必要指令的文件以进行滚动 如下所示 反过来 它被保存到输出中 完成此步骤
  • C# - 平移光标

    我正在 PictureBox 控件中实现大图像的平移 并且设置适当的方向平移光标没有问题 但是 我似乎找不到用于平底锅原点的图像 内部带有箭头的圆圈 我在哪里可以找到它 我觉得image您正在寻找的内容未包含在框架中 每个应用程序都使用自己
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 有C语言的解释器吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • XslCompiledTransform 和自定义 XmlUrlResolver:“具有相同键的条目已存在”

    有没有办法调试由自定义 XmlUrlResolver 从数据库加载的 XSLT 文档 或者有人知道下面的错误消息是关于什么的吗 我有一个导入通用 xslt 文档的 XSLT 样式表

随机推荐

  • 如何在 Adob​​e AEM 中启用 WebDAV?

    我尝试通过 WebDAV 访问 Adob e AEM 但是无法使其工作 我正在运行开箱即用的 crx quickstart 因此我使用端口 4502 和默认工作区 我使用 Windows 资源管理器作为 WebDAV 客户端 可以轻松地连接
  • 如何使用php将数组分成两个相等的部分

    如何在 PHP 中使用 array slice 将数组分成两个相等的部分 这是我的要求 第一个数组包含 0 1200 第二个数组包含 1200 end From array slice 的文档 https www php net array
  • 如何将数据传递到 Angular-strap 弹出窗口

    我试图在悬停在全日历项目上时显示角带弹出框 我正在使用 eventMouseover eventMouseout 回调来显示 隐藏弹出窗口 scope calendarConfig defaultView basicWeek eventMo
  • git push origin master 凭据丢失或无效

    无法再推送到原始主机 git push origin master 几天以来 我卸载了 git 和 Visual Code 并重新安装了它 但没有任何结果 我遇到了同样的错误 Missing or invalid credentials E
  • 如何在同一进程中从不同路径加载到同一库两次?

    我正在编写一个新程序 即使用 OpenSSL 加密数据 我希望我的程序符合 FIPS 标准 为了强制执行 FIPS 模式 我使用 API 进行设置FIPS 模式 集 我还需要将加密的数据传输到第三方设备 设备供应商还提供了一个与设备通信的库
  • 在 C# 中匹配西里尔字母符号

    我有一个巨大的代码文件 其中有很多行 如下所示 Enterprise TextMessageBox Show String Format S n n 0 e gt Message S 我想做的是用我提供的另一个文本找到带有西里尔符号字符串的
  • 复杂 json 中的嵌入表达式未正确替换

    在空手道测试中 我们能够替换 json 中单个键的嵌入表达式 但是当尝试替换 json 的复杂键时它不起作用 输入 json integration serviceData integrationService name integrati
  • 如何在 Eclipse/Java 中的同一工作区中引用另一个项目中的类

    我的 Eclipse ADT Android Java 工作区中有两个项目 MyProject MyProjectAutomatedUITests 在MyProject中有一个包 constants和一个班级ButtonNames java
  • 将div放入MYSQL die

    我有这个 mysql 请求 mysql query query or die mysql error 很简单 但我想改变mysql error 对于这个div div class ui widget div class ui state h
  • 无法使用机器ip连接到mongodb

    已安装Mongo using homebrew 如果我输入mongo在外壳上 它连接到test 但是当我输入ip address本地机器而不是127 0 0 1 mongo host 192 168 1 100 verbose 它给我错误消
  • 告诉程序当没有找到保存数据时要做什么 NSUserDefaults,iPhone

    我已经保存了使用 NSUserDefaults 保存的数据 我的印象是 如果已经没有任何内容保存到密钥中 第一次运行应用程序 它将默认为 0 然而 情况似乎并非如此 这是我所拥有的 To save void viewWillDisappea
  • style css标签会在body中渲染吗?

    我正在使用 CMS 显然它有一个错误 不允许我向其中添加任何内容一篇博客文章 它将所有内容插入正文中 在大多数情况下都可以正常工作 但在如下代码实例中 如果将这种类型的代码放入标签在所有主要浏览器中 IE8 Firefox Chrome 和
  • 如何保护应用程序免受第 3 方 js 库中存在的 XSS 向量的影响?

    我在 Android 移动应用程序中使用各种第 3 方库 如 cordova js jquery jquery mobile mobilizer 等 通过不安全地使用 eval settimeout inner outerhtml 这些库被
  • Hive:转换“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”中缺少秒数的字符串日期时间

    我使用以下代码将字符串日期时间变量转换为日期时间 但转换后的字符串缺少 SSS 部分 使用的代码 cast FROM UNIXTIME UNIX TIMESTAMP oldtime yyyy MM dd T HH mm ss SSS Z y
  • 如何创建类python中所有可见元素的列表

    我正在使用 python 3 x Selenium WebDriver 我正在制作一个 for 循环来遍历页面的所有元素 限制类中元素的长度 然后打印迭代次数 但它如何获取所有可见和隐藏的元素仅获取页面中的可见元素 要从我正在使用的类中获取
  • Z-index 不适用于 Flex 元素? [复制]

    这个问题在这里已经有答案了 我试图有两列 一列是可以展开并重叠另一列的菜单 但我使用了一个 Flex 元素来包裹这些列 并且我的菜单展开了behind另一个元素 即使具有更大的z index 渲染效果是这样的 main font famil
  • 使用 Clipper 库的平行线

    我在用着CLIPPER http www angusj com delphi clipper php库偏移线并尝试制作平行线 ClipperOffset co new ClipperOffset co AddPath s JoinType
  • 使用jquery从右向左滑动内容

    当您按下 下一步 按钮时 视口会更改内容 两个 并进行转换 我想要的是 我想滑动内容 正如您在演示中看到的那样 使用translateX 200px 能给我渴望的效果 但它开始于0px并前往 200px 我希望每个 div 从红色条带 右
  • 解决“未找到 mongo”和“php_mongo.dll 不是 win32 应用程序”错误

    我已经尝试安装 mongodb 6 个多小时了 但仍然没有成功 我将非常详细地说明这一点 以便希望有人能帮助我完成这项工作 My local comp HP laptop Windows 7 64 bit operating system
  • 运行时固定大小 std::vector ?

    性能在我的应用程序中至关重要 我需要类似的东西std experimental dynarray http en cppreference com w cpp container dynarray 因此数组的大小在运行时决定 所以我考虑使用