首先來看看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. 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等

    1  新建一个项目 在pro文件中只需要加上CONFIG += C++11 main.cpp #include <QMap> int main() { QMap<int,QStrin ...

  2. PyQt(Python+Qt)学习随笔:Qt中的部分类型QString、QList和指针、引用在PyQt中的实现方式

    老猿Python博文目录 老猿Python博客地址 在我们查阅Qt的文档资料时,可以看到Qt中的链表使用的是QList,字符串使用的是QString,但老猿在测试时发现这两个类型PyQt不支持,无法找 ...

  3. Qt中的通用模板算法QtAlgorithms(qDeleteAll,qBinaryFind,qCountLeadingZeroBits,qPopulationCount,qFill,qSwap,qSort)

    Qt在<QtAlgorithms>头文件中为我们提供了一系列的全局模板方法,这些模板方法主要用于容器操作,比如qDeleteAll().其在Qt中的声明如下: void qDeleteAl ...

  4. Qt中的常用容器类(解释比较全面,有插图)

    在Qt库中为我们提供了一系列的基于模板的容器类.这些类可以被用来存储特定类型的项.例如,如果你需要一个大小可以变得QString数组,那么可以使用QVector<QString>. 这些容 ...

  5. Qt中使用ActiveX(3篇)

    由于最近需要使用ActiveX,一般来说可以使用微软提供的MFC或者ATL框架来开发,由于我个人对这部分内容不是很熟悉,好在Qt也提供对于ActiveX的支持.本文主要记录个人学习ActiveX的一些 ...

  6. C++中的stack类、QT中的QStack类

    C++中的stack 实现一种先进后出的数据结构,是一个模板类. 头文件 #include<stack> 用法(以int型为例): stack <int> s; //定义一个i ...

  7. C++中的queue类、QT中的QQueue类

    C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> 用法(以int型为例): queue<int> Q; //定义一个int ...

  8. Qt 中一些常用类中文说明

    Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...

  9. Qt中常用知识点

    1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...

随机推荐

  1. HDU 3488 KM Tour

    参考题解 这题注意有重边.. #include <cstdio> #include <cstring> #include <algorithm> using nam ...

  2. 并查集 - BZOJ 1104 [POI2007]洪水

    BZOJ 1104 [POI2007]洪水 描述 AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了他的所有顾问(包括你 ...

  3. WebApp开发入门

    web app 的技术平台很多,如adobe phonegap.sencha touch.appcan(国产).dcloud(国产)平台.我选择了dcloud平台,原因:简单,容易上手. web ap ...

  4. Mysql - 安装及初始化设置

    1. 下载mysql-5.7.13-tar.gz http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13-linux-glibc2.5-x8 ...

  5. poj3255 Roadblocks 次短路

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10098   Accepted: 3620 Descr ...

  6. 如何查找Windows上安装的DB2的端口号Port

    1.db2com打开控制台 2.db2 get dbm cfg 可以通过db2 get dbm cfg,查询数据库管理器配置参数,就可以查到端口号或端口名. 示例: $ db2 get dbm cfg ...

  7. xp局域网共享访问没权限处理

    参考: http://www.360doc.com/content/11/0114/00/905007_86380468.shtml

  8. 【CF1017A】The Rank(签到)

    题意:给定n个人的4门课成绩,排名按总分,保证总分互不相同,求1号名次 n<=1e3,a[i],b[i],c[i],d[i]<=1e2 思路: #include<cstdio> ...

  9. 【NOIP2015】信息传递(强连通分量)

    题意:找一张图中的最小环 O(n) 思路:强连通分量tarjan即可 注意环中节点数>1 ..]of longint; n,i,ans,tot,id,top,time,x:longint; pr ...

  10. CSS3 动画卡顿性能优化解决方案--摘抄

    最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...