加载中…
个人资料
老虎哥哥
老虎哥哥
  • 博客等级:
  • 博客积分:0
  • 博客访问:8,335
  • 关注人气:43
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt中的容器类 QList QLinkedList QVector..遍历及相关

(2016-04-06 11:32:30)
标签:

it

股票

军事

旅游

时尚

分类: 软件技术

http://hi.baidu.com/china_0000/item/fa8712f8e3b5ccc00cd1c828

QList是最常用的容器类,他存储给定类型的数据类型T的一列直,,可以在列表中追加QList::append();and QList::preppend();and QList::insert()..

他所维护的是一个一指针数组,该数组存储的指针指向存储列表项的直,因此可以采用下标进行快速访问。

QList list;
string str="i am turing ,welcome to Qt.";
list<<str;
qDebug()<<list(0);

其中的QStringList 就是从这边继承下来的

QLinkedList是一个链式列表,它以非连续的内存快保存数据,所以他是不能使用下标进行访问的,,也就是说他更适合插入的操作,时间是在O(1).

QVector这个方式是在相邻的内存位置上保存数据的,也就是以数组的方式进行存储的,所以对起进行插入的操作的时候是一项很耗时间的,因为要有大量的数据进行一动。。当然也是可以通过下标对其进行访问的。

Qt的容器类为遍历其中的操作提供了两种方法:
1.java风格的迭代器,
2。STL风格的。

下面介绍STL风格
QList QList::const_iterator QList::iterator///中间那个是只读的,最后是可读写的
QLinkedList QLinkedList::const_iterator QLinkedList::iterator
下面那个同理
这个风格的迭代器是建立在指针的基础上的,++指向下一个,*返回指向的项。

下面再以QList来简单介绍他们的迭代器具体的API接口
QList::begin()///返回指向第一个列表项的迭代器,这个是有效的
QList::end()//返回的是容器最后列表项之后的下一个,也就是标记的是无效的那个,

#include

int main(int argc, char *argv[])
{
QList list;
for(int j=0; j<10; j++)
list.insert(list.end(), j);//表示在列表的最后插入直j 

QList::iterator i;
for(i=list.begin(); i!=list.end(); ++i)
{
qDebug() << (*i);
*i = (*i) * 10;
}

QList::const_iterator ci;
for(ci=list.constBegin(); ci!=list.constEnd(); ++ci)
qDebug() << *ci;

return 0;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有