qdebug打印数组所有内容_4.5 案例9 使用QVector处理数组

本文详细介绍了如何使用Qt中的QVector处理数组,包括向QVector中添加成员、遍历数组、查找与删除成员等操作,并提供了使用下标、迭代器的示例。还讲解了向QVector中添加自定义类对象及其指针,以及处理自定义类对象时拷贝构造函数和operator==的重要性。
摘要由CSDN通过智能技术生成

本案例对应的源代码目录:src/chapter04/ks04_05。

在软件研发过程中,数据结构是个无论如何也不能回避的话题。包括STL在内,很多第三方库都对常用数据结构进行了模板化封装。从本节课开始,将介绍Qt封装的几个常用数据结构模板类,本节先介绍数组类QVector。学过C++的人员都知道数组的成员在内存中是连续存放的,因此使用下标访问数组成员时效率是非常高的。但是当扩大数组容量时,有可能需要重新申请内存,然后将旧的数组成员复制到新内存中,这会损失一些性能。所以如果经常对数据集进行插入、删除元素的操作,那么不建议使用数组。OK,回归正题,本节设计了3个场景来介绍QVector。

(1)向QVector中添加成员并遍历。

(2)向QVector中添加自定义类的对象。

(3)向QVector中添加自定义类对象的指针。

首先简单说一下课程附件代码。因为要用到命令行来接受用户输入,因此需要在pro中修改CONFIG参数项。

因为要用到QVector,所以请在文件开头增加对的包含语句。#include

下面分别看一下这3个场景的案例。

1.向QVector中添加成员并遍历

在代码清单4-28中,将int类型的数据添加到QVector。如果把int换成Qt的类,代码也类似。

代码清单4-28/**

* @brief向QVector添加成员并遍历。

* @return无

*/

void example01(){

//添加成员

QVector vecId;

vecId.push_back(2011);

vecId.push_back(2033);

vecId.push_back(2033);

vecId.push_back(2042);

vecId.push_back(2045);

// push_front

vecId.push_front(2046);

...

}

代码清单4-28中,建立了一个成员类型为quint32的数组。这是一个整数数组,数组名称为vecId。调用push_back()接口可以向数组中添加成员。push_back()的功能是将新加入的成员添加到数组的尾部,而push_front()接口则负责将成员添加到数组的首部,也就是下标为0的位置。可以将数组的成员打印到终端来印证这一点,见代码清单4-29。

代码清单4-29// example01()

//遍历成员-使用下标

cout << endl << "-------------- QVector ---------------" << endl;

cout << "print members using index ......" << endl;

int idxVec = 0;

for (idxVec = 0; idxVec < vecId.size(); idxVec++) {

cout << "    vecId[" << idxVec << "] =" << vecId[idxVec] << endl;

}

在代码清单4-29中,使用下标遍历数组的成员。语法同访问C++中的普通数组成员一样:数组名[下标]。另外,通过正序迭代器(简称迭代器)来访问数组成员也非常方便,见代码清单4-30。

代码清单4-30// example01()

//遍历成员-使用迭代器(正序)

cout << endl << "-------------- QVector ---------------" << endl;

cout << "print members using iterator......" << endl;

QVector::iterator iteVec = vecId.begin();①

idxVec = 0;

for (iteVec = vecId.begin(); iteVec != vecId.end(); iteVec++, idxVec++) {②

cout << "    " <&l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值