QT容器

QT不仅提供了序列化的容器,比如QVector<T>, QLinkedList<T>, QList<T>, 还提供了联合型的容器,如QMap<K, T>, QHash<K, T>. 

同时,QT也提供了能用在任意容器上的通用算法,如qSort()算法能把序列化的容器排序。

而且,QT上也能使用STL。

 

1、QVector<T>

类似于数组,但能被动态分配大小。注意,在vector中插入元素代价可能比较大。

初始化:

QVector<double> vect(3);

添加元素:

vect[0] = 1.0;

vect.append(2.0);

vect << 1.0 << 0.5 << -0.4 

遍历:

double sum = 0.0;

for(int i=0; i<vect.count(); ++i)

    sum += vect[i];

 

2、QLinkedList<T>

类似于双向链表,插入代价小,但不支持随机存取,即不支持[]。

初始化:

QLinkedList<QString> list;

添加元素:

list.append("Clash");

在指定位置之前插入元素,

QLinkedList<QString>::iterator i = list.find("Ramones");

list.insert(i, "Tote Hosen");

 

3、QList<T>

集合了QVector的随机存取和QListedList的插入元素速度快的优点

QStringList是QList<T>的子类

 

4、QStck<T>

栈,支持push(), pop(), top()

 

5、QQueue<T>

队列,支持enqueue(), dequeue(), head()

 

6、每一种容器都有一种对应的迭代器,如QList:

QList<double> list;

...

QListIterator<double> i(list);

while(i.hasNext()) {

   do_somethid(i.next());

}

 

7、QMap

QMap<QString, int> map;

map.insert("eins", 1);

map.insert("sieben", 7);

map.insert("dreiundzwanzig", 23);

map["eins"] = 8;

map["sieben"] = 7;

int val = map.value("dreiundzwanzig", 30); 如要不存在,则默认值为30

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值