Qt数据结构常用算法

在头文件中,Qt提供了一些全局的模板函数,这些函数是可以使用在容器上的十分常用的算法。我们可以在任何提供了STL风格迭代器的容器类上使用这些算法,包括QList、QLinkedList、QVector、QMap和QHash。

qsort

  • 正序(从小到大)
QList<int> list;
list << 36 << 16 << 66 << 6 << 56;
qSort(list.begin(), list.end());
// list: [ 6, 16, 36, 56, 66 ]
  • 逆序(greater:从大到小)
QList<int> list;    
list << 36 << 16 << 66 << 6 << 56;
qSort(list.begin(), list.end(), qGreater<int>());
// list: [ 66, 56, 36, 16, 6 ]

qcopy

 QStringList list;    
 list << "a" << "b" << "c";    
 QVector<QString> vect(3);    
 qCopy(list.begin(), list.end(), vect.begin());    
 foreach (QString item, vect)    
 {        
 	qDebug() << item;    
 }
 QStringList list;  
 list << "one" << "two" << "three";  
 QVector<QString> vect1(3);  
 qCopy(list.begin(), list.end(), vect1.begin()); 
 // vect: [ "one", "two", "three" ]
   
 QVector<QString> vect2(8);  
 qCopy(list.begin(), list.end(), vect2.begin() + 2);  
 // vect: [ "", "", "one", "two", "three", "", "", "" ]

qfill

  QVector<QString> vect(5);    
  qFill(vect.begin() + 1, vect.end() - 2, "PUBG");    
  foreach (QString item, vect)    
  { 
      qDebug() << item;    
  }

qfind

  • QList 使用qfind
QList<int> List;    
List << 1 << 5 << 15 << 25;    
QList<int>::const_iterator Iter = qFind(List.begin(), List.end(), 25);    
if(Iter != List.end())    
{
    qDebug() << "Find: " << *Iter;    
}   
else  
{    
    qDebug() << "Not Find";    
}
  • QMap使用qfind
QMap<QString, QString> Employees;    
Employees.insert("c++", "Bob");    
Employees.insert("win32", "xiaqi");    
Employees.insert("mfc", "laowang");    
Employees.insert("qt", "mengfan");    
Employees["linux"] = "Danny";    
/* Danny 变laowang */    
QMap<QString, QString>::iterator i = Employees.find("linux");    
while (i != Employees.end() && i.key() == "linux")    
{        
	qDebug() << i.key() << i.value() ;        
	i.value() = "oldwang";        
	++i;    
}    
/* 再遍历一次 */    
i = Employees.begin();    
while (i != Employees.end())    
{  
     qDebug() << i.key() << i.value() ;        
     ++i;    
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

√沫影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值