Q各种容易结构介绍: 除了QVarLengthArray,所有QTL数据都存放在堆空间,支持隐式共享。
QVarLengthArray:数据存储在对象内,连续存储结构,无隐式共享功能;
QVector:在堆空间存储数据,连续存储结构;
QLinkedList:双向链表,在堆空间存储数据,链式存储结构;
QList:后面详细说明;
QMap:用红黑树管理键值对数据,key不可重复,升序顺序排序;
QMultiMap:用红黑树管理键值对数据,key可重复;
QHash:用哈希表管理键值对数据,key不可重复;
QMultiHash:用哈希表管理键值对数据,key可重复;
QSet:用哈希表存储值类型的数据,值可重复;
QQueue:队列结构,先进先出; QStack:栈结构,先进后出;
QList的删除:
示例创建
QList<QString> list;
for (int i = 0; i < 9; ++i) {
list.append(QString::number(i));
}
指定删除
for (int i = 0; i < list.size(); ) {
if (list.at(i).toInt() == 3)
{
list.removeAt(i);
}
else if (list.at(i).toInt() == 4)
{
list.removeAt(i);
}
else
i++;
}
全部删除
(1)慢速删除
int size = list.size();
for (int i = 0; i < size ; ++i) {
list.remove(0);
//或list.pop_front();
}
(2)快速删除
int size = list.size();
for (int i = 0; i < size ; ++i) {
list.removeLast();
//或list.pop_back();
}
QVector的删除:
示例创建
QVector<QString> vector;
for (int i = 0; i < 9; ++i) {
vector.append(QString::number(i));
}
指定删除
for (int i = 0; i < vector.size(); ) {
if (vector.at(i).toInt() == 3)
{
vector.removeAt(i);
}
else if (vector.at(i).toInt() == 4)
{
vector.removeAt(i);
}
else
i++;
}
全部删除
(1)慢速删除
int size = vector.size();
for (int i = 0; i < size ; ) {
vector.removeAt(0);
//或vector.pop_front();
}
(2)快速删除
int size = vector.size();
for (int i = 0; i < size ; ) {
vector.removeLast();
//或vector.pop_back();
}
QMap的删除
示例创建
QMap<int,QString> map;
for (int i = 0; i < 9; ++i) {
map.insert(i,QString::number(i));
}
指定删除(方法一)
for (int i = 0; i < map.size(); ) {
if (map.keys().at(i) == 3)
{
map.remove(map.keys().at(i));
}
else if (map.keys().at(i) == 4)
{
map.remove(map.keys().at(i));
}
else
i++;
}
指定删除(方法二,使用迭代器)
for (QMap<int,QString>::iterator it = map.begin(); it != map.end(); )
{
if (it.key() == 3)
{
map.erase(it++);
}
else if (it.key() == 8)
{
map.erase(it++);
}
else
it++;
}
全部删除
(1)慢速删除
int size = map.size();
for (int i = 0; i < size; ++i) {
map.remove(map.keys().at(0));
}
(2)快速删除
for (QMap<int,QString>::iterator it = map.begin(); it != map.end();)
{
map.erase(it++);
}
QHash删除
示例创建
QHash<int,QString> hash;
for (int i = 0; i < 9; ++i) {
hash.insert(i,QString::number(i));
}
指定删除(方法一)
for (int i = 0; i < hash.size(); ) {
if (hash.keys().at(i) == 3)
{
hash.remove(hash.keys().at(i));
}
else if (hash.keys().at(i) == 8)
{
hash.remove(hash.keys().at(i));
}
else
i++;
}
指定删除(方法二,使用迭代器)
for (QHash<int,QString>::iterator it = hash.begin(); it != hash.end(); )
{
if (it.key() == 3)
{
hash.erase(it++);
}
else if (it.key() == 8)
{
hash.erase(it++);
}
else
it++;
}
全部删除
(1)慢速删除
int size = hash.size();
for (int i = 0; i < size; ++i) {
hash.remove(hash.keys().at(0));
}
(2)快速删除
for (QHash<int,QString>::iterator it = hash.begin(); it != hash.end();)
{
hash.erase(it++);
}