网站布局结构有哪些,平面设计培训需要学什么,商业空间设计方案ppt,网站界面是什么做的一.
QVector容器是一个动态数组#xff0c;可以容纳任意数量的元素,在相邻的内存中存储给定的数据类型作为一组数据,在QVector前部或中间位置插入元素都会导致内存中大量的数据元素移动,这使得操作速度会减慢.可使用迭代器对这组数据进行访问.
和其他的容器类型类似,QVector…一.
QVector容器是一个动态数组可以容纳任意数量的元素,在相邻的内存中存储给定的数据类型作为一组数据,在QVector前部或中间位置插入元素都会导致内存中大量的数据元素移动,这使得操作速度会减慢.可使用迭代器对这组数据进行访问.
和其他的容器类型类似,QVector容器的功能也有添加元素append(),删除元素remove(),修改元素replace(),查询contains(),访问....... vStarts鹿晗热巴; //添加(尾部插入)vStarts.append(杨紫); //头部插入vStarts.prepend(Anglebaby); //尾部插入vStarts.insert(2,小明); //指定位置插入vStarts.replace(2,迪丽热巴);//替换//删除元素下标为0的元素vStarts.remove(0);//删除某个元素vStarts.removeAll(鹿晗); //移除所有比较结果相同的元素vStarts.removeAt(0); //移除指定位置的元素vStarts.removeOne(杨紫); //移除比较结果相同的第一个元素vStarts.clear();删除所有元素qDebug()是否有小明?:vStarts.contains(小明);//查询是否有该元素
使用迭代器访问数据.
1.
java风格迭代器 //java风格只读迭代QVectorIteratorQString it_sr(vStarts);for(it_sr.toFront();it_sr.hasNext();){qDebug() it_sr.next();}//java风格读写迭代QMutableVectorIteratorQString it_srw(vStarts);for(it_srw.toFront();it_srw.hasNext();){QString s it_srw.next();//方式1.使用QString类型的compare()方法比较字符串.比较结果相同则返回0(假).if(!QString::compare(s,热巴)){ it_srw.setValue(赵丽颖);}//方式2.//if(s 热巴){// it_srw.setValue(赵丽颖);//}}
2.
STL风格迭代器. //STL读写迭代器QVectorQString::iterator it_VWR;it_VWR vStarts.begin();for(;it_VWR ! vStarts.end();it_VWR){*it_VWR *it_VWR 好人;qDebug()*it_VWR;}//STL只读迭代器QVectorQString::const_iterator it_VR;it_VR vStarts.constBegin();for(;it_VR ! vStarts.constEnd();it_VR){qDebug()*it_VR;} 二.
容器QMap类型由键(key)值(value)对组成一个元素.通过键key映射到值value.
第一个QString数据类型值是键key,第二个QString数据类型值是值value.一个键对应一个值,以key字母顺序(A~Z)存储数据. //一个键对应一个值QMapQString,QString infoMap;//添加元素infoMap.insert(王祖蓝,163cm); //方式1infoMap[姚明] 226cm; //方式2infoMap.insertMulti(易烊千玺,173cm); //方式3.如果映射中已经存在具有相同键的项则该函数将简单地创建一个新项 通过key找value qDebug() 姚明: infoMap[姚明]; //226cmqDebug() 易烊千玺: infoMap.value(易烊千玺); //173cm
通过value找key
qDebug()173cm的是谁呢?infoMap.key(173cm); //易烊千玺
1.
java风格迭代器
与QVector容器迭代器非常类似,打印时要把迭代器位置指向下一个位置.同时打印键值对只能分别把键key和值value写出来,不能把俩个键值对当做一个整体来打印输出. //java风格只读迭代器QMapIteratorQString,QString it_r(infoMap);for(it_r.toFront();it_r.hasNext();){//方式1//it_r.next();//qDebug()it_r.key() :it_r.value();//以key的字母A~Z作为排序的依据.有序存储.//方式2qDebug()it_r.next().key() :it_r.value();} //java风格读写迭代器QMutableMapIteratorQString,QString it_rw(infoMap);if(it_rw.findNext(163cm)){ //查找元素it_rw.setValue(163.1cm); //重新设置元素值value}for(it_rw.toFront();it_rw.hasNext();){it_rw.next();//获取元素qDebug()it_rw.key():it_rw.value();}
2.
STL风格迭代器 //STL风格读写迭代器QMapQString,QString::iterator it_QWR;it_QWR wMap1.begin();for(;it_QWR ! wMap1.end();it_QWR){qDebug()it_QWR.key()it_QWR.value() -STL;}//STL风格只读迭代器QMapQString,QString::const_iterator it_QR;it_QR wMap1.constBegin();for(;it_QR ! wMap1.constEnd();it_QR){qDebug()it_QR.key()it_QR.value() -stl;} 3.
前面讲的是一个键对应一个值的情况,下面是一个键对应多个值的情况. //一个键对应对多个值QMultiMapQString,QString wMap1;wMap1.insert(spring,15°C);wMap1.insert(summer,35°C);//一个键key插入多个值valuewMap1.insert(summer,39°C);wMap1.insert(summer,40°C);wMap1.insert(autumn,23°C);wMap1.insert(winter,-5°C);wMap1.insert(winter,-15°C);wMap1.insert(winter,-55°C);wMap1.remove(winter,-55°C); //删除元素//打印一个键的多个值(键值对).所有winter键key的键值对都会被打印出来qDebug()endlwinter:wMap1.values(winter);
通过value()函数,参数填写键值key,就能打印所有相同键的值value.即一个键key的对应的多个值value.使用迭代器访问的方式与上面一样. 三.
QHash容器与QMap容器一样,也是使用键值对的方式存储数据,它实现了一个哈希表,通过哈希函数将键映射到值,数据存放无序,任意顺序存储,所以它的存储速度比QMap更快. //QHash类,数据存放无序QHashint,QString moneyHash;moneyHash.insert(1,一块钱);moneyHash.insert(10,十块钱);moneyHash.insert(20,二十块钱); //方式1moneyHash[50] 五十块钱; //方式2moneyHash[100] 一百块钱;moneyHash.insertMulti(100,毛爷爷); //一个键有多个值使用函数insertMulti()插入//该方式让前面key为100的value一百块钱会被毛爷爷覆盖,insertMulti():一个键多个值会被保存//moneyHash[100] 毛爷爷; 需要注意的是,如果一个键映射多个值,使用方式2并不能添加一个新的键值对,它只会在同一个键的键值对上,把前面相同键的值覆盖掉.所以使用insertMulti()函数才会添加新的键值对,而不会覆盖原有的键值对. 1.
java风格迭代器
迭代器的使用方式和上面的一样,这里就不一一列举了. //java风格只读迭代器QHashIteratorint,QString it_mr(moneyHash);//java风格读写迭代器QMutableHashIteratorint,QString it_mrw(moneyHash);
2.
STL风格迭代器
由于迭代器的访问方式和前面的QMap类似,就不一一详细说明. //STL读写迭代器 QHashint,QString::iterator it_SWR; //STL只读迭代器QHashint,QString::const_iterator it_SR;
all~~