1、描述
容器和迭代器类提供修改、删除、插入、保存数据和遍历等功能,Qt包含的容器类比STL更加简单和安全。
2、常用的容器
- QList<T>:使用数据间的索引可以访问数据,储存特定类型。
- QLinkedList<T>:使用迭代器访问数据,而非基于整数的索引,对于已有的大量数据中插入数据比QList快,链表。
- QVector<T>:相临近内存的位置存储特定类型的数据数组。
- QStack<T>:堆栈结构先进后出的QVector子类容器,主要接口push()、pop()、top()。
- QQueue<T>:队列结构先进先出的QList子类容器,主要接口enqueue() dequeue() head()。
- QSet<T>:快速查找单一值的数据模式,保存数据无顺序,可以快速查找。
- QMap<Key,T>:与数据对应的单一映射方式的关键字,字典功能容器,二叉树搜索字典。
- QMultiMap<Key,T>:QMap子类,提供电仪关键字模式形态,基于多映射。
- QHash<Key,T>:和QMap类似,但是查询速度比QMap更快,可以随机存储数据,散列表字典。
- QMultiHash<Key,T>:提供多个关键字模型。
3、示例
3.1 QList
QList<QString> liststr;
//添加
liststr<<"one"<<"two"<<“three”;
liststr.append("four");
//查找
if(liststr[1] == "two"){qDebug()<<liststr[1];
}
if(liststr.at(1) == "two"){qDebug()<<liststr.at(1);
}
3.2 QHash<Key,T>
QHash<QString, int> hash;
hash["one"] = 1;
hash["two"] = 2;
hash.insert("four",4);
int nmb = hash.value("four");
3.3 QMultiHash<Key,T>
QMultiHash<QString, int> mhash;
mhash.insert("cost",100);
mhash.insert("cost",200);
mhash.insert("cost",300);QList<int> val = mhash.value("cost");
for(int i = 0; i < mhash.size(); i++){qDebug()<<val.at(i);
}
3.4 QStack<T>
QStack<int> stack;
stack.push(100);
stack.push(200);
stack.push(300);while(!stack.isEmpty()){qDebug()<<stack.pop();
}
3.5 QQueue<T>
QQueue<int> queue;
queue.enqueue(100);
queue.enqueue(200);
queue.enqueue(300);while(!queue.isEmpty()){qDebug()<<queue.dequeue();
}