Qt中QVector与QList的应用
首先來看看QVector 的基本使用方式,建立一個可容納兩個元素的QVector ,並使用索引方式存取元素值:
QVector<double> vect(2);
vect[0] = 1.0;
vect[1] = 2.0;
for (int i = 0; i < vect.count(); ++i) {
cout << vect[i] << endl;
}
for (int i = 0; i < vect.count(); ++i) {
cout << vect.at(i) << endl;
}
要使用索引方式設定元素,必須先配置好夠長的空間,否則會發生超出索引範圍的錯誤,使用[] 運算子指定索引存取的方式是比較方便,但在某些場合下,使用at() 方法會較有效率一些,這涉及Qt 的隱式共享機制,稍後再作介紹。
您也可以使用QVector 的append() 方法來加入元素,使用remove() 方法來移除元素,使用insert() 方法來插入元素,例如append() 的使用如下:
vect.append(3.0);
vect.append(4.0);
或者是使用<< 運算子附加元素:
vect << 5.0 << 6.0;
Qt4 Gossip: 循序容器(QVector、QLinkedList、QList...) - 转 收藏
QVector 、 QLinkedList 與QList 是Qt 所提供的幾個常用容器類別。QVector 將項目(item )儲存在鄰接的記憶體空間之中,提供基於索引 (index-based )存取方式的容器類別。QLinkedList 以鏈結(Linked )的方式儲存項目,提供基於迭代器(iterator- based )存取方式的容器類別。QList 提供基於索引的快速存取容器類別,內部使用指標陣列,可提供快速插入及移除項目。
首先來看看QVector 的基本使用方式,建立一個可容納兩個元素的QVector ,並使用索引方式存取元素值:
QVector<double> vect(2);
vect[0] = 1.0;
vect[1] = 2.0;
for (int i = 0; i < vect.count(); ++i) {
cout << vect[i] << endl;
}
for (int i = 0; i < vect.count(); ++i) {
cout << vect.at(i) << endl;
}
要使用索引方式設定元素,必須先配置好夠長的空間,否則會發生超出索引範圍的錯誤,使用[] 運算子指定索引存取的方式是比較方便,但在某些場合下,使用at() 方法會較有效率一些,這涉及Qt 的隱式共享機制,稍後再作介紹。
您也可以使用QVector 的append() 方法來加入元素,使用remove() 方法來移除元素,使用insert() 方法來插入元素,例如append() 的使用如下:
vect.append(3.0);
vect.append(4.0);
或者是使用<< 運算子附加元素:
vect << 5.0 << 6.0;
QVector 也重載了一些其它的運算子,以及提供了一些其它可用的方法,請查詢Qt 線上文件有關於QVector 的介紹。QVector 提供的是鄰接的 記憶體空間以存取物件,所以對於循序存取或使用索引,效率較高,但如果要插入或移除元素時,效率就會低落。QVector 的子類別QStack 提供了 push() 、pop() 與top() 等方法,方便您進行堆疊結構的物件管理。
對於需要經常要在容器中插入或移除元件,您可以使用QLinkedList 以提高存取效率,它不提供基於索引的存取方式,而是基於迭代器的存取方式,稍後會介紹迭代器的使用,以下先來看看QList 。
Qlist
QList 提供的是基於索引的存取方式,其內部實作使用了指標陣列,陣列中每個指標指向所要儲存的元素,結合了QVector 與QLinkedList 的 優點,提供快速存取與插入、移除,其索引存取方式或可用的方法與QVector 是類似的,也可以使用<< 運算子來附加元素,例如:
QList<QString> list;
list << "caterpillar" << "momor" << "bush";
for(int i = 0; i < list.size(); ++i) {
cout << list[i].toAscii().data() << endl;
}
cout << endl;
for(int i = 0; i < list.size(); ++i) {
cout << list.at(i).toAscii().data() << endl;
}
cout << endl;
Qt中QVector与QList的应用的更多相关文章
- 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等
1 新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...
- PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式
老猿Python博文目录 老猿Python博客地址 在我们查阅Qt的文档资料时,可以看到Qt中的链表使用的是QList,字符串使用的是QString,但老猿在测试时发现这两个类型PyQt不支持,无法找 ...
- Qt中的通用模板算法QtAlgorithms(qDeleteAll,qBinaryFind,qCountLeadingZeroBits,qPopulationCount,qFill,qSwap,qSort)
Qt在<QtAlgorithms>头文件中为我们提供了一系列的全局模板方法,这些模板方法主要用于容器操作,比如qDeleteAll().其在Qt中的声明如下: void qDeleteAl ...
- Qt中的常用容器类(解释比较全面,有插图)
在Qt库中为我们提供了一系列的基于模板的容器类.这些类可以被用来存储特定类型的项.例如,如果你需要一个大小可以变得QString数组,那么可以使用QVector<QString>. 这些容 ...
- Qt中使用ActiveX(3篇)
由于最近需要使用ActiveX,一般来说可以使用微软提供的MFC或者ATL框架来开发,由于我个人对这部分内容不是很熟悉,好在Qt也提供对于ActiveX的支持.本文主要记录个人学习ActiveX的一些 ...
- C++中的stack类、QT中的QStack类
C++中的stack 实现一种先进后出的数据结构,是一个模板类. 头文件 #include<stack> 用法(以int型为例): stack <int> s; //定义一个i ...
- C++中的queue类、QT中的QQueue类
C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> 用法(以int型为例): queue<int> Q; //定义一个int ...
- Qt 中一些常用类中文说明
Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...
- Qt中常用知识点
1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...
随机推荐
- P3388 【模板】割点(割顶)
P3388 [模板]割点(割顶) 题目背景 割点 题目描述 给出一个n个点,m条边的无向图,求图的割点. 输入输出格式 输入格式: 第一行输入n,m 下面m行每行输入x,y表示x到y有一条边 输出格式 ...
- LA 7048 Coprime 莫比乌斯反演
题意: 给出\(n(n \leq 10^5)\)个数字\(a_i(a_i \leq 10^5)\),从中选出\(3\)个数,使得这\(3\)个数两两互质或者两两不互质 分析: 可以说这是<训练指 ...
- python基础学习笔记——反射
对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...
- python基础学习笔记——单继承
1.为什么要有类的继承性?(继承性的好处)继承性的好处:①减少了代码的冗余,提供了代码的复用性②提高了程序的扩展性 ③(类与类之间产生了联系)为多态的使用提供了前提2.类继承性的格式:单继承和多继承# ...
- php msql 表单
http://www.cnblogs.com/webers/p/3849707.html
- Ubuntu简单指令和热键的学习
Ubuntu查看本机版本的方法 sudo lsb_release -a即可 注销linux: 输入:exit 注意,离开系统不是关机,基本上,linux本身已经有相当多的工作进行,所以你离开时,这次这 ...
- 微信小程序的那些坑
早闻微信小程序是个坑,结果名不虚传,细数一下我开发小程序遇过到坑. 1.UI组件过度封装. 微信小程序的组件是模仿react.js或vue.js的web组件设计的,并且封装了weui.css样式. P ...
- 再谈H2的MVStore与MVMap
对H2的[MVStore]: http://www.cnblogs.com/simoncook/p/5188105.html 这篇文章的补充. 概述 我们通常用的map,比如HashMap Linke ...
- Selenium WebDriver- actionchians模拟鼠标悬停操作
#encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...
- Redhat7配置yum源(本地源和网络源)
Redhat7配置yum源(本地源和网络源) 目录 一:配置本地yum源 二:配置网络yum源 YUM(Yellow dog Updater Modified): yum是基于RPM包构建的软件更 ...