QVector与std::vector对比

2023-11-10

QVector与std::vector对比

前言

  在使用Qt开发Windows软件的情况下,软件开发者可以选择Qt提供的容器以及STL中的容器,这里我们以QVector与vector为例,告诉读者两种容器的区别,以及使用哪一种容器更为合理。笔者认为这取决于你希望如何优化你的软件;当你更在意的是效率时,笔者建议你使用vector;但当你更在意的是安全时,笔者建议你使用QVector。当今的计算机已经足够强大,在使用容器时,笔者建议你使用QVector。

实验

  vector和QVector都是通过复制构造函数添加对象,但当你执行push_back时,你会发现,vector只调用了一次复制构造函数,而QVector调用了两次复制构造函数。
  代码

#include <iostream>
#include <QtCore/QVector>

using namespace std;

class A
{
public:
	A()
	{
		cout << "A()" << endl;
	}

	A(const A& a)   // 增加拷贝构造函数
	{
		cout << "copy A()" << endl;
	}
	~A()
	{
		cout << "~A()" << endl;
	}
public:
	int v;
};

int main()
{
	A a;
	vector<A> vec;
	cout << "vector test" << endl;
	vec.push_back(a);
	QVector<A> qvec;
	cout << "qvector test" << endl;
	qvec.push_back(a);
	system("pause");
	return 0;
}

  使用vector时,只进行了一次复制构造和而使用QVector时进行了两次复制构造。

不同点对比

  QVector具有隐式共享而vector不具备,QVector中不论时使用at()还是operator都会检查越界问题,而vector中operator[]不检查越界,at( )才检查越界。

补充说明

  关于vector的更多资料,你可以访问C/C++参考网站
  关于QVector的更多资料,你可以访问Qt官网
  如果以上描述仍不足以解答你的疑惑,请联系我的邮箱707101557@qq.com。

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

QVector与std::vector对比 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • B - Mayor's posters

    Time Limit 1000MS Memory Limit 65536KB 64bit IO Format I64d I64u Submit Go Back Status Description
  • STM32最小系统板下载后断电程序丢失问题

    前者为运行代码时跳线帽接口 后者是下载代码时的跳线帽接口
  • myhttp

    HTTP 是一个属于应用层的面向对象的协议 由于其简捷 快速的方式 适用于分布式超媒体信息系统 实现一个服务器程序 支持HTTP协议的服务器 浏览器进行访问 从请求角度上 支持GET和POST方法 从相应角度上 支持静态页面也支持动态页面
  • flex布局换行后元素不足一行怎样均匀分布

  • 看懂时序图

    1 如何看懂时序图 掌握这几个程序就够了 chooseboy的博客 CSDN博客 软件时序图怎么看 2 sip 时序图 简单几步让你看懂单片机时序图 weixin 39710966的博客 CSDN博客 3 如何看懂时序图 掌握这几个程序就够
  • Linux gdm问题解决解决

    修改 etc inittab 改变runlevel为5 例如 root QRedHat etc cat etc inittab id 5 initdefault 修改GDM的配置文件 etc X11 gdm gdm conf 将 xdmcp
  • 路由器的工作原理是什么

    路由器工作原理 传统地 路由器工作于osi七层协议中的第三层 其主要任务是接收来自一个网络接口的数据包 根据其中所含的目的地址 决定转发到下一个目的地址 因此 路由器首先得在转发路由表中查找它的目的地址 若找到了目的地址 就在数据包的帧格前
  • ananconda powershell init失败&无法激活环境问题

    4 6以后版本使用conda init后仍然无法激活环境 尝试了好多次 断断续续花了得有几十个小时的时间 今天再尝试conda init时候发现了这个 从图片上看出它修改了onedrive下的profile文件 但是我的powershell
  • 趣味小游戏——井字棋

    目录 一 前言 二 主体框架 三 游戏内容的实现 四 结语 一 前言 想必大家在小时候或多或少的都接触过井字棋吧 那么今天我就来带大家了解如何在编程中实现这一游戏吧 二 主体框架 include
  • objcopy使用说明

    objcopy用于将object的部分获全部内容拷贝到另一个object 从而可以实现格式的变换 objcopy可用用于将文件转换成S record格式或者raw二进制格式 例如 xxxx elf objcopy O srec test o
  • tensorflow保存训练好的深度学习模型

    最近在看MKR的算法 复现跑通了以后 把训练好的模型保存下来 加入以下代码即可 saver tf train Saver saver save sess model MKRmodel ckpt print 模型已保存 上面的代码要写到和se
  • 【Spring】怎么配置事务?看这一篇就够了

    0 什么是事务 想象一个场景 A给B转账 A的钱转出去之后发生异常B没有收到钱 A的钱少了B的钱没有多 这不就乱套了吗 所以就引出了事务这个概念 事务是数据库操作最基本的单元 逻辑上的一组操作 这一组操作要么都执行成功 要么都失败 事务的作
  • Unity获取场景中所有根物体

    每个物体都属于一个Scene 而通过Scene GetRootGameObjects 接口就可以获得该Scene的所有根物体 我们只需要遍历所有Scene即可 List
  • Python Matplotlib 颜色名 与默认color_list获取

    绘制图像的时候需要选择美化的曲线 网上的图有很多 但是不少颜色的关键字并不支持 所以还是多参考官方的颜色名表 参考 https matplotlib org 3 1 0 gallery color named colors html mat
  • C++:type A is not dircet base of B

    原因 B的构造函数上直接使用了A的构造 但是在定义类的时候又没有继承 如下 class A A class B B B B A 报错
  • V4L2 零基础入门(一)——打开摄像头和获取摄像头基本信息

    今天工作需要用V4L2获取摄像头的数据 所以稍微了解了一些相关内容 在这里记录一下 参考了很多优秀的博客 大家如果感兴趣也可以直接参考 链接放在文末 我也是初学者 有什么问题大家多多交流 文章目录 测试环境 V4L2介绍 采集流程 打开设备
  • 2021全球访问量最高网站榜单出炉!

    最近锦鱼课堂从国外SimilarWeb数据平台了解到 2021中季度全球访问量最高的网站榜单出炉了 Google排第一 国内唯一上榜的网站 百度 排第七 2021全球访问量最高网站榜单 流量 网站 微新闻 第1张 以下是SimilarWeb
  • 剑指Offer系列(java版,详细解析)16.数值的整数次方

    题目描述 剑指 Offer 16 数值的整数次方 难度中等129 实现 pow x n 即计算 x 的 n 次幂函数 即 xn 不得使用库函数 同时不需要考虑大数问题 示例 1 输入 x 2 00000 n 10 输出 1024 00000
  • sql优化之复合索引。

    查询时间 3 27s 这是一个单表 主要优化在where子句当中 WHERE DELETED TIME IS NULL and F ID 99352763854523394 AND CATEGORY CODE LIKE Attachment
  • QVector与std::vector对比

    QVector与std vector对比 前言 实验 不同点对比 补充说明 前言 在使用Qt开发Windows软件的情况下 软件开发者可以选择Qt提供的容器以及STL中的容器 这里我们以QVector与vector为例 告诉读者两种容器的区