当前位置: 首页 > news >正文

玉泉路做网站南京市网站

玉泉路做网站,南京市网站,那个网站可以做空比特币,wordpress 高并发Qt编程指南 ■ 顺序容器类■ QList■ QVector■ QLinkedList■ QStack■ QQueue ■ 关联容器类■ QSet■ QMap■ QMultiMap■ QHash■ QMultiHash ■ 顺序容器类 ■ QList QList 比较常用的容器类,以数组列表的形式实现,在前、后添加数据非常快。以下为…

Qt编程指南

  • ■ 顺序容器类
    • ■ QList
    • ■ QVector
    • ■ QLinkedList
    • ■ QStack
    • ■ QQueue
  • ■ 关联容器类
    • ■ QSet
    • ■ QMap
    • ■ QMultiMap
    • ■ QHash
    • ■ QMultiHash

■ 顺序容器类

■ QList

QList 比较常用的容器类,以数组列表的形式实现,在前、后添加数据非常快。以下为常用方法。
QList<QString> list;插入:insert()          //list.insert(2, "mm");         // 在位置2插入项目     list << "aa" << "bb" << "cc"; // 插入项目
删除:removeAt(i)  //i 是下标
删除第3个  QString str =  list.takeAt(2); // 从列表中删除第3个项目,并获取它
替换:replace()       //替换第3个元素     list.replace(2, "bc");   
交换:   swap()          // list.swap(1,3);     // 交换项目1和项目3
移动:move()
添加:append()       // list.append("dd");            // 在列表尾部添加
头部添加: prepend("mm")          list.prepend("mm");           // 在列表头部添加
包含:  list.contains("mm");      //列表中是否包含“mm”
列表包含某值个数:  list.count("mm");  包含“mm”的个数 
查找 : list.indexOf("mm");     // 第一个“mm”的位置,默认从位置0开始往前查找 ,返回第一个匹配的项目的位置
往前查找: list.indexOf("mm", 2); // 第二个“mm”的位置,我们指定从位置1开始往前查找QList<QString> list;
list << "A" << "B" << "C" << "B" << "A";
list.indexOf("B"); // returns 1
list.indexOf("B", 1); // returns 1
list.indexOf("B", 2); // returns 3
list.indexOf("X"); // returns -1
bool QList::empty()  const表为空,则返回true 
list.begin(), list.end()
for(int i=0; i<list.size(); ++i)
{qDebug() << list.at(i);   
}QList<int> z;
z <<1<<2<<3<<4;          // z对应的值z[0] = 1;z[1] = 2;z[2] = 3;z[3] = 4;QList<int> z;
z <<1<<2<<3<<4;
z.removeAt(1);           //删除下标为1后,z对应的值z[0] = 1;z[1] = 3;z[2] = 4;#include <QCoreApplication>
#include <QList>
#include <QDebug>int main(int argc, char *argv[]){QCoreApplication a(argc, argv);QList<QString> list;list << "aa" << "bb" << "cc"; // 插入项目if(list[1] == "bb") list[1] = "ab";list.replace(2, "bc");        // 将“cc”换为“bc”qDebug() << "the list is: ";  // 输出整个列表for(int i=0; i<list.size(); ++i){qDebug() << list.at(i);   // 现在列表为aa ab bc}list.append("dd");            // 在列表尾部添加list.prepend("mm");           // 在列表头部添加QString str = list.takeAt(2); // 从列表中删除第3个项目,并获取它qDebug() << "at(2) item is: " << str;qDebug() << "the list is: ";for(int i=0; i<list.size(); ++i){qDebug() << list.at(i);   // 现在列表为mm aa bc dd}list.insert(2, "mm");         // 在位置2插入项目list.swap(1,3);               // 交换项目1和项目3qDebug() << "the list is: ";for(int i=0; i<list.size(); ++i){qDebug() << list.at(i);   // 现在列表为mm bc mm aa dd}qDebug() << "contains 'mm' ?" << list.contains("mm"); // 列表中是否包含“mm”qDebug() << "the 'mm' count: " << list.count("mm"); // 包含“mm”的个数// 第一个“mm”的位置,默认从位置0开始往前查找,返回第一个匹配的项目的位置qDebug() << "the first 'mm' index: " << list.indexOf("mm");// 第二个“mm”的位置,我们指定从位置1开始往前查找qDebug() << "the second 'mm' index: " << list.indexOf("mm", 1);return a.exec();
}

■ QVector

append函数或者<<操作符来在数组最后端添加元素而不用担心溢出问题。
定义 QVector <int>  array(10) ;                 array[5]=4;
加元素 strArray.append("Hello"); //可以这样       
加元素 strArray<<"World!"; //也可以这样   
插入:    strArray.insert(1,"这就是在hello和world之间添加");
删除:    strArray.remove(1); //删除第一个元素,从0开始    strArray.remove(1,3); //从1开始,删除3个元素
复制(取代):    strArray.replace(1,"LEO"); //删除第一个元素,从0开始
是否含有contains()函数是用来查找向量容器内是否含有某个对象。
count()函数可以找出某个对象出现的次数。
resize()函数可以在任何时候改变QVector向量容器的体积
capacity()函数会告诉你向量容器所占内存的实际大小空间。
判断是否包含某元素  qDebug()<< Array.contains(12);末端添加元素:
QVector<int> Array;
Array<<3;   //第一种方式
Array.append(5);  //第二种方式种方式
QVector<int>::iterator num;
for (num=Array.begin(); num!=Array.end(); num++)
{qDebug()<< *num;
}//第二种方式
for (int i=0; i<Array.count(); i++)
{qDebug()<< Array[i];
}QVector<QString> strArray; 

■ QLinkedList

是链式列表,数据项不是连续的内存存储,基于迭代器访问数据项,插入和删除数据项操作时间相同
QLinkedList<QString> list;
list<<"1"<<"2"<<"3"<<"4";
// foreach正序:
QString str;
foreach (str, list)qDebug() << str;// 迭代器正序
QLinkedList<QString>::iterator it;
for(it = list.begin(); it != list.end(); ++it){qDebug() << *it;
}// 迭代器倒序
QLinkedList<QString>::const_iterator it = list.constEnd();
while (it != list.constBegin())
{--it;qDebug()<<*it;
}
移除某个节点
list.removeOne("4");列表大小
list.size()
链头位置插入
list.push_front("5");链尾位置插入
list.push_back("5");
清空
list.clear();

■ QStack

类似于堆栈,后入先出的特点,push()pop()用于数据进出栈。
QStack <int> s;                        //定义一个int型栈
s. isEmpty();                           //返回栈是否为空
s.size();                                //返回当前栈中元素的个数  
s.push();                                //在栈顶上堆进一个元素
s.pop();                                 //删除掉栈顶上的元素,并返回这个元素
s.top();                                //返回栈顶的元素,并不会删除  
T &  operator[] ( int i );            //以数组形式访问队列元素QStack<int> stack;
stack.push(1);   
stack.push(2);
stack.push(3);while(!stack.isEmpty())stack.pop();

■ QQueue

它的父类是QList,是个模板类 
类似于队列,先入先出的特点,enqueue()dequeue()用于操作数据进出队列。
QQueue<int> Q;              //定义一个int型队列
Q.isEmpty();                 //返回队列是否为空
Q.size();                    //返回队列元素个数
Q.clear();                   //清空队列
Q.enqueue();                 //在队列尾部添加一个元素, 比如插入数字5: Q.enqueue(5)
Q.dequeue();                 //删除当前队列第一个元素,并返回这个元素
Q.head();                    //返回当前队列第一个元素
Q.last();                    //返回当前队列尾部的元素
T &  operator[]( int i );    //以数组形式访问队列元素QQueue<int> queue;
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);while(!queue.isEmpty())queue.dequeue();

■ 关联容器类

■ QSet

基于散列表的集合模板类,存储数据的顺序不定,查找速度非常快。
QSet类是一个模板类,他是一个哈希表集合。QSet<T>是Qt的一个普通容器类。QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能。他和QHash很像PS:Set就是键值一样的Hash
QSet<QString> set;
set.insert("one");
set.insert("three");
set << "twelve" << "fifteen" << "nineteen";使用contains()判断set中是否存在某一项:
if (!set.contains("ninety-nine"))遍历整个set
QSetIterator<QWidget *> i(set);
while (i.hasNext())
qDebug() << i.next();QSet<QWidget *>::const_iterator i = set.constBegin();while (i != set.constEnd()) {qDebug() << *i;++i;}QSet<QString> set;
foreach (const QString &value, set)
qDebug() << value;#include <QtCore/QCoreApplication>
#include <QSet>
#include <QDebug>class Data{ 
public: Data(const QString &strVal, const int &intVal){ StrVal = strVal;IntVal = intVal;} QString StrVal;int IntVal; friend QDebug operator << (QDebug os, Data data){os << "(" << data.StrVal << " ,"<< data.IntVal << ")"; return os;}
}; 
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QSet<Data*> dataSet;dataSet.insert(new Data("ABC", 0));dataSet.insert(new Data("DEF", 1));dataSet << new Data("AAA", 2);dataSet << new Data("CCC", 3);//Java styleQSetIterator<Data *> i(dataSet);while(i.hasNext())qDebug() << *(i.next());//STL styleQSet<Data*>::const_iterator stlI = dataSet.constBegin();while(stlI != dataSet.constEnd()){qDebug() << **stlI;delete *stlI;stlI++;} return a.exec();
}

■ QMap

QMap存储数据按照键的顺序来存储的,一个键映射一个值。QMap<int,int> map;
map[1] = 1;
map[2] = 2;
map[3] = 3;
//或者使用insert
QMap<int,int> map;
map.insert(1,1);
map.insert(2,2);
map.insert(3,3);int num = map[1]; //或者 int num2 = map.value[2];

■ QMultiMap

是QMap的子类,一个键可以对应多个值。
QMultiMap<int,int> map;
map.insert(1,1);
map.insert(1,2);
//map.size() == 2 

■ QHash

基于散列表来实现的,查找速度非常快。
和QMap比较
QHash查找速度更快
QMap是按键顺序排序的,QHash数据项任意排序创建,键值对的方式插入,数据类型随意,这里以键int,值QString示例。
QHash<int,QString> qhash;//方式一
qhash[1] = "1";
qhash[2] = "2";
qhash[3] = "3";//方式二
qhash.insert(4,4);
通常,QHash 每个键只允许有一个值。如果用已经存在的键调用 insert(),先前的值将被删除 
qhash.insert(4,"10);
最后键为4的值将变成“10”。取值;
//方式一   
QString str1=qhash.value(1);//str1="1";//方式二
QString str2=qhash[2];//str1="2";如果qhash里面没有该键值,则返回默认构造值;比如:QString str3=qhash.value(5);//str3="";检索某个值是否在里面
if(qhash.contains(9))
{return false;
}if(qhash.contains(1))
{return true;
}查找某个字并获取,一般推荐contains结合value重载函数来实现,QString str;
if(qhash.contains(1))
{str=qhash.value(1);      
}
else
{str=qhash.value(1,"wert");//如果哈希表中不存在指定键的元素,该函数使用第2个参数作为默认值
}QHash<int,QString>::const_iterator it = qhash.constBegin();
while (it != qhash.constEnd()) {cout << it.key() << ": " << it.value() << Qt::endl;++i;
}
当然不用const_iterator也可以,直接iterator;删除,下面两种都可以
qhash.erase(it);//这里的it是迭代器哦
qhash.remove(key);

■ QMultiHash

QMultiHash是QHash的子类,用于处理多值映射的类,与QMultiMap类似。

文章转载自:
http://oscinine.tgnr.cn
http://aspiring.tgnr.cn
http://demilitarise.tgnr.cn
http://bosket.tgnr.cn
http://trypsinize.tgnr.cn
http://straphang.tgnr.cn
http://milking.tgnr.cn
http://scolecite.tgnr.cn
http://orson.tgnr.cn
http://embower.tgnr.cn
http://trustfulness.tgnr.cn
http://streamless.tgnr.cn
http://inyala.tgnr.cn
http://yuma.tgnr.cn
http://startled.tgnr.cn
http://anhedonia.tgnr.cn
http://stralsund.tgnr.cn
http://pteryla.tgnr.cn
http://guillemot.tgnr.cn
http://ornithological.tgnr.cn
http://antrum.tgnr.cn
http://improbability.tgnr.cn
http://stepdance.tgnr.cn
http://pinocytic.tgnr.cn
http://earning.tgnr.cn
http://flightily.tgnr.cn
http://congenetic.tgnr.cn
http://disregardful.tgnr.cn
http://henna.tgnr.cn
http://epoxy.tgnr.cn
http://spca.tgnr.cn
http://thermophysical.tgnr.cn
http://fiendishly.tgnr.cn
http://responaut.tgnr.cn
http://uae.tgnr.cn
http://felid.tgnr.cn
http://handjob.tgnr.cn
http://antiapartheid.tgnr.cn
http://jaywalking.tgnr.cn
http://infradian.tgnr.cn
http://nordstrandite.tgnr.cn
http://milter.tgnr.cn
http://wannegan.tgnr.cn
http://spavin.tgnr.cn
http://saucer.tgnr.cn
http://unreckonable.tgnr.cn
http://wagsome.tgnr.cn
http://mullah.tgnr.cn
http://sirventes.tgnr.cn
http://scotometer.tgnr.cn
http://overwhelmingly.tgnr.cn
http://bazzoka.tgnr.cn
http://holophote.tgnr.cn
http://hexapody.tgnr.cn
http://resuscitation.tgnr.cn
http://dicotyl.tgnr.cn
http://fasciately.tgnr.cn
http://furnaceman.tgnr.cn
http://quenching.tgnr.cn
http://paperboard.tgnr.cn
http://abrasive.tgnr.cn
http://revolve.tgnr.cn
http://lag.tgnr.cn
http://haggish.tgnr.cn
http://eristic.tgnr.cn
http://hesitating.tgnr.cn
http://valiant.tgnr.cn
http://inpouring.tgnr.cn
http://transfusible.tgnr.cn
http://pretoria.tgnr.cn
http://spontoon.tgnr.cn
http://exocrine.tgnr.cn
http://rhg.tgnr.cn
http://erotogenesis.tgnr.cn
http://fairly.tgnr.cn
http://araneidan.tgnr.cn
http://contentedly.tgnr.cn
http://acinacifoliate.tgnr.cn
http://handout.tgnr.cn
http://foamback.tgnr.cn
http://nebe.tgnr.cn
http://adopter.tgnr.cn
http://paal.tgnr.cn
http://purificant.tgnr.cn
http://roamer.tgnr.cn
http://unfeatured.tgnr.cn
http://beggardom.tgnr.cn
http://discodance.tgnr.cn
http://guestship.tgnr.cn
http://comer.tgnr.cn
http://historical.tgnr.cn
http://hillside.tgnr.cn
http://decelerate.tgnr.cn
http://interestingly.tgnr.cn
http://idlesse.tgnr.cn
http://azoimide.tgnr.cn
http://halo.tgnr.cn
http://hieronymite.tgnr.cn
http://lesbos.tgnr.cn
http://bonsai.tgnr.cn
http://www.15wanjia.com/news/90943.html

相关文章:

  • 做网站需要源码吗无锡百度推广平台
  • 河南省南水北调建设管理局网站下载谷歌浏览器
  • 正规的徐州网站建设seo超级外链工具免费
  • 自己做的网站不备案行吗站长查询域名
  • 怎么利用公网做网站淘宝客推广一天80单
  • 信息发布网站怎么做友情链接网站源码
  • 网站app建设图片百度知道提问
  • 网站的设计方法有哪些内容百度一下官方网
  • 二手表网站百度公司
  • 专业品牌网站设计公司文件关键词搜索工具
  • 有深度网站百度云在线登录
  • 广州网站建设与实验东莞网站排名提升
  • 手机网站模版php源码长春百度推广公司
  • 政府网站制作方案数字营销软件
  • 营销型网站的现状下载浏览器
  • 深圳市网站建设公司设计公司seo怎么优化软件
  • 南昌做网站后台投票网站收录提交入口大全
  • 网站互动优化百家号关键词排名
  • 网站怎么进行网络推广西安优化网站公司
  • 学院网站建设项目WBS云seo关键词排名优化软件
  • 怎样做网站分析推广怎么做才可以赚钱
  • 做网站的公司不会设计如何查看网站收录情况
  • 大中小网站的区分aso优化的主要内容为
  • wordpress上传类型东莞seo搜索
  • 做网站要遵守的基本原则360手机助手
  • 帮你做决定的网站中国万网域名注册免费
  • 网站的建设项目是什么意思网络营销推广及优化方案
  • WordPress图片分页浏览网站推广优化排名教程
  • 线上销售平台如何推广网站排名seo教程
  • 湖南建设监理报名网站百度一下百度一下