QT容器学习总结

容器(QT版)

一、QStringList

1.1 添加元素

QStringList添加元素的方法有两个:1、使用输出运算符。2、调用append方法

QStringList strList;	//创建QStringList对象
//输出运算符添加元素
strList << "第一串字符" << "第二串字符";
//调用append方法
strList.append("第三串");

QStringList有 insert 方法可以进行元素的插入

//调用insert方法
strList.insert(0,"首字符串");	//在开头插入字符

1.2 遍历元素

  1. 普通for循环遍历
for(int i=0; i<strList.size(); i++){
	qDebug() << strList.at(i);
//	qDebug() << strList[i];
}
  1. foreach遍历
foreach(QString str,strList){
	qDebug() << str;
}
  1. STL风格迭代器
QStringList::iterator it = strList.begin();
for(; it!=strList.end(); it++){
	qDebug() << *it;
}
  1. java风格迭代器
QListIterator<QString> strIt(strList);
while(strIt.hasNext()){
	qDebug() << strIt.next();
}

1.3 寻找元素

  1. at方法
    可以使用at方法,参数为元素所在位置。
  2. []运算符
    使用[]运算符,传入内容为元素所在位置,访问元素值
  3. contains方法
    使用contains方法,参数为寻找的元素,会判断QStringList中是否存在寻找的元素,存在返回true,不存在返回false。
    strList.contains("第一串字符");

1.4 删除元素

  1. 删除首元素
strList.removeFirst();
  1. 删除尾元素
strList.removeLast();
  1. 删除某个元素
strList.removeOne("第一串字符");
  1. 删除指定位置元素
strList.removeAt(1);	//删除第二个位置的元素
  1. 清空所有元素
strList.clear();

二、QList

2.1 添加元素

QList添加元素的方法:
1、使用输出运算符。2、调用append方法。3、调用insert方法。4、调用prepend方法。

QList<QString> list;	//创建QList对象
//输出运算符添加元素
list << "list字符串1" << "list字符串2";
//调用append方法
list.append("list字符串3");
//调用insert方法
list.insert(1,"插入的字符串");	//在第2个位置插入字符
//调用prepend方法
list.prepend("首字符");	//开头插入元素

2.2 遍历元素

  1. STL风格迭代器

读写迭代器

QList<QString>::iterator it = list.begin();
for(; it!=list.end(); it++){
	qDebug() << *it;
}

只读迭代器

QList<QString>::const_iterator it_const = list.constBegin();
for(; it_const!=list.constEnd(); it_const++){
	qDebug() << *it_const;
}
  1. java风格迭代器

读写迭代器

QMutableListIterator<QString> mlIt(list);
//从最后一个元素往前遍历
for(mlIt.toBack(); mlIt.hasPrevious();){
	qDebug() << mlIt.previous();
}

只读迭代器

QListIterator<QString> itList(list);
//从第一个元素往后遍历
for(itList.toFront(); itList.hasNext();){
	qDebug() << itList.next();
}

以上读写迭代器可以对元素进行修改/插入/删除,只读迭代器只能进行遍历。

2.3 寻找元素

  1. at方法
    可以使用at方法,参数为元素所在位置。
  2. []运算符
    使用[]运算符,传入内容为元素所在位置,访问元素值
  3. contains方法
    使用contains方法,参数为寻找的元素,会判断QList中是否存在寻找的元素,存在返回true,不存在返回false。
    list.contains("list字符串1");

2.4 删除元素

  1. 删除首元素
list.removeFirst();
  1. 删除尾元素
list.removeLast();
  1. 删除某个元素
list.removeOne("list字符串1");
  1. 删除指定位置元素
list.removeAt(1);	//删除第二个位置的元素
  1. 清空所有元素
list.clear();

2.5 修改元素

  1. replace方法
//将第三个元素进行修改
list.replace(2,"变更第三个字符");
  1. []运算符
//将第二个元素进行修改
list[1] = "变更第2个字符";
  1. setValue方法
    这个方法是在Java风格的读写迭代器中进行使用,可对元素进行修改。
QMutableListIterator<QString> mlIt(list);
//从最后一个元素往前遍历
for(mlIt.toBack(); mlIt.hasPrevious();){
	mlIt.previous();
	if(mlIt == "list字符串1"){
		mlIt.setValue() = "变更第一个字符串";
	}
}

三、QLinkedList

3.1 添加元素

与QList方法一致。

3.2 遍历元素

  1. STL风格迭代器

读写迭代器

QLinkedList<QString>::iterator linkListIt = linkList.begin();
for(; linkListIt!=linkList.end(); linkListIt++){
	qDebug() << *linkListIt;
}

只读迭代器

QLinkedList<QString>::const_iterator linkIt_const = linkList.constBegin();
for(; linkIt_const !=linkList.constEnd(); linkIt_const ++){
	qDebug() << *linkIt_const ;
}
  1. java风格迭代器

读写迭代器

QMutableLinkedListIterator<QString> mlIt(linkList);
//从最后一个元素往前遍历
for(mlIt.toBack(); mlIt.hasPrevious();){
	qDebug() << mlIt.previous();
}

只读迭代器

QLinkedListIterator<QString> itList(linkList);
//从第一个元素往后遍历
for(itList.toFront(); itList.hasNext();){
	qDebug() << itList.next();
}

以上读写迭代器可以对元素进行修改/插入/删除,只读迭代器只能进行遍历。

3.3 寻找元素

QLinkedList只有contains方法,
参数为寻找的元素,会判断QLinkedList中是否存在寻找的元素,存在返回true,不存在返回false。
linkList.contains("list字符串1");

3.4 删除元素

  1. 删除首元素
linkList.removeFirst();
  1. 删除尾元素
linkList.removeLast();
  1. 删除某个元素
linkList.removeOne("linkList字符串1");
  1. 清空所有元素
linkList.clear();

3.5 修改元素

没有replace方法和下标访问法。
setValue方法使用与QList一样。

四、QVector

4.1 添加元素

与QList方法一致。

QVector<QString> vector;	//创建QList对象
vector << "vector容器元素1" << "vector容器元素2";
//调用append方法
vector.append("vector容器元素3");
vector.insert(0,"vector容器首元素");

4.2 遍历元素

  1. STL风格迭代器

读写迭代器

QVector<QString>::iterator vectorIt = vector.begin();
for(; vectorIt!=vector.end(); vectorIt++){
	qDebug() << *vectorIt;
}

只读迭代器

QVector<QString>::const_iterator vectorIt_const = vector.constBegin();
for(; vectorIt_const!=vector.constEnd(); vectorIt_const++){
	qDebug() << *vectorIt_const;
}
  1. java风格迭代器

读写迭代器

QMutableVectorIterator<QString> mVIt(vector);
//从最后一个元素往前遍历
for(mVIt.toBack(); mVIt.hasPrevious();){
	qDebug() << mVIt.previous();
}

只读迭代器

QVectorIterator<QString> itVector(vector);
//从第一个元素往后遍历
for(itVector.toFront(); itVector.hasNext();){
	qDebug() << itVector.next();
}

以上读写迭代器可以对元素进行修改/插入/删除,只读迭代器只能进行遍历。

4.3 寻找元素

与QList一样,有 at方法,支持[]运算符,有 contains方法。

4.4 删除元素

  1. 删除首元素
linkList.removeFirst();
  1. 删除尾元素
linkList.removeLast();
  1. 删除某个元素
linkList.removeOne("vector容器元素1");
  1. 清空所有元素
linkList.clear();
  1. 删除指定位置元素
linkList.removeAt(2);

3.5 修改元素

与QList一样,有replace方法和下标访问法。
setValue方法使用与QList一样,只能在Java风格的读写迭代器中使用。

五、QMap

5.1 添加元素

通过键值对的方式添加元素,不支持输出运算符进行添加元素,只能通过insert方法和[]运算符。

QMap<QString,QString> map;	//创建QList对象
map.insert("001","map容器第1个元素");
map.insert("002","map容器第2个元素");
map["003"] = "map容器第3个元素";

5.2 遍历元素

  1. STL风格迭代器

读写迭代器

QMap<QString,QString>::iterator mapIt = map.begin();
for(; mapIt!=map.end(); mapIt++){
	qDebug() << mapIt.key() << mapIt.value();	//打印map容器中的key和value
}

只读迭代器

QMap<QString,QString>::const_iterator mapIt_const = map.constBegin();
for(; mapIt_const!=map.constEnd(); mapIt_const++){
	qDebug() << *mapIt_const;	//打印map容器中的value
	qDebug() << mapIt_const.key() << mapIt_const.value();	//打印map容器中的key和value
}
  1. java风格迭代器

读写迭代器

QMutableMapIterator<QString,QString> mMIt(map);
//从最后一个元素往前遍历
for(mMIt.toBack(); mMIt.hasPrevious();){
	mMIt.previous();
    qDebug() << mMIt.key() << mMIt.value();
}

只读迭代器

QMapIterator<QString,QString> itMap(map);
//从第一个元素往后遍历
for(itMap.toFront(); itMap.hasNext();){
	itMap.next();
	qDebug() << itMap.key() << itMap.value();
}

以上读写迭代器可以对元素进行修改/插入/删除,只读迭代器只能进行遍历。

5.3 寻找元素

  1. 通过key找value
map.value("002");	//寻找key="002"的元素,返回value
map["003"];		//通过下标查找key="003"的元素,返回value
//使用find方法,返回迭代器,这个只适用于STL风格的迭代器
QMap<QString,QString>::iterator mapIt2 = map.find("001");
qDebug() << "001是什么:" << mapIt2.value();
  1. 通过value找key
map.key("map容器第2个元素");		//寻找value="map容器第2个元素"的key
//使用findNext方法,返回布尔值,这个只适用于Java风格的迭代器
QMapIterator<QString,QString> itMap(map);
qDebug() << itMap.findNext("map容器第3个元素");

5.4 删除元素

  1. 删除指定key的元素
map.remove("001");
  1. 清空所有元素
map.clear();

5.5 修改元素

setValue方法,只能在Java风格的读写迭代器中使用,会对对应的value进行修改;
也可以使用下标方式更改内容:map["001"] = "更改第一个元素";
还可以通过.value方式更改元素内容,只适用于读写的迭代器。

QMap<QString,QString>::iterator mapIt = map.begin();
mapIt.value() = "";

六、QHash

6.1 添加元素

通过键值对的方式添加元素,不支持输出运算符进行添加元素,只能通过insert/insertMulti 方法和[]运算符。

QHash<int,QString> hash;	//创建QList对象
hash.insert(101,"hash容器第1个元素");
hash.insert(102,"hash容器第2个元素");
hash[103] = "hash容器第3个元素";
hash.insertMulti(104,"hash容器第4个元素");

6.2 遍历元素

  1. STL风格迭代器

读写迭代器

QHash<int,QString>::iterator hashIt = hash.begin();
for(; hashIt!=hash.end(); hashIt++){
	qDebug() << hashIt.key() << hashIt.value();	//打印hash容器中的key和value
}

只读迭代器

QHash<int,QString>::const_iterator hashIt_const = hash.constBegin();
for(; hashIt_const!=hash.constEnd(); hashIt_const++){
	qDebug() << *hashIt_const;	//打印hash容器中的value
	qDebug() << hashIt_const.key() << hashIt_const.value();	//打印hash容器中的key和value
}
  1. java风格迭代器

读写迭代器

QMutableHashIterator<int,QString> mHIt(hash);
//从最后一个元素往前遍历
for(mHIt.toBack(); mHIt.hasPrevious();){
	mHIt.previous();
    qDebug() << mHIt.key() << mHIt.value();
}

只读迭代器

QHashIterator<int,QString> itHash(hash);
//从第一个元素往后遍历
for(itHash.toFront(); itHash.hasNext();){
	itHash.next();
    qDebug() << itHash.key() << itHash.value();
}

以上读写迭代器可以对元素进行修改/插入/删除,只读迭代器只能进行遍历。

6.3 寻找元素

  1. 通过key找value
hash.value(101);	//寻找key="002"的元素,返回value
hash[102];		//通过下标查找key="003"的元素,返回value
//使用find方法,返回迭代器,这个只适用于STL风格的迭代器 
QHash<int,QString>::iterator hashIt2 = hash.find(103);
qDebug() << "103是什么:" << hashIt2.value();
  1. 通过value找key
hash.key("hash容器第2个元素");		//寻找value="hash容器第2个元素"的key
//使用findNext方法,返回布尔值,这个只适用于Java风格的迭代器
QHashIterator<int,QString> itHash(hash);
qDebug() << itHash.findNext("hash容器第3个元素");

6.4 删除元素

  1. 删除指定key的元素
hash.remove("001");
  1. 清空所有元素
hash.clear();

6.5 修改元素

setValue方法,只能在Java风格的读写迭代器中使用,会对对应的value进行修改;
也可以使用下标方式更改内容:hash[101] = "更改第一个元素";
还可以通过.value方式更改元素内容,只适用于读写的迭代器。

QHash<int,QString>::iterator hashIt = hash.begin();
hashIt.value() = "";

与QMap相比,QHash插入的元素是无序排列的,QMap以key排序;但QHash 比QMap 的查询速度快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值