1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等


新建一个项目

在pro文件中只需要加上CONFIG
+= C++11

main.cpp

#include
<QMap>

 

int
main()

{

   
QMap<int,QString>
map;

   
map.insert(1,"1");

   
map.insert(2,"2");

   
map.insert(3,"3");

   
map[4]
=
"4";

 

   
if(map.find(1)
==
map.end())

   
{

       
//not
exist

   
}

 

   
/*

    
*
"1"

    
*
"2"

    
*
"3"

    
*
"4"

    
*/

   
foreach(int
key,map.keys())

   
{

       
QString
value
=
map[key];

       
qDebug()
<<
value;

   
}

 

   
for(auto
it
=
map.begin();
it!=map.end();
)

   
{

      
it.key();

      
it.value();

#if
0

      
if(needRemove)

      
{

          
it
= map.erase(it);

      
}

      
else

      
{

          
++i;

      
}

#endif

   
}

 

   
map.remove(1);

}

运行结果:

 

#include <QVector>
#include <QList>
#include <QMap>
#include <QSet>
#include <QQueue>
#include <QStack>
#include <QMultiMap>
#include <QDebug>
#include <QStringList>
 
int main()
{
    QVector<int> intVector;
    intVector << 5;
    intVector.append(15);
    intVector.push_front(10);
    intVector.push_back(20);
 
    foreach(int value, intVector)
    {
        qDebug() << value;
    }
 
    QVector<int>::iterator it;
    for(it = intVector.begin(); it!=intVector.end(); ++it)
    {
        qDebug() << *it;
    }
 
    int size = intVector.size();
    for(int i = 0; i < size; ++i)
    {
        qDebug() << intVector[i];
        qDebug() << intVector.at(i);
    }
 
    //查找
    qDebug() << intVector.indexOf(5);
 
    //sort
    qSort(intVector);
 
    //删除一个
    //intVector.removeOne(5);
    //intVector.removeAll(5);
 
    qDebug() << "sort";
    for(it = intVector.begin(); it!=intVector.end(); ++it)
    {
        qDebug() << *it;
    }
}

运行结果:

 



时间: 2024-11-24 08:38:39

1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等的相关文章

Qt中的多线程技术

简述 Qt 提供了许多类和函数来处理线程,下面我们总结下可以用来实现多线程应用程序的四种不同方式. 简述 QThread - 具有可选事件循环的低级 API QThreadPool 和 QRunnable - 重用线程 Qt Concurrent - 使用高级 API WorkerScript - QML 中的线程 选择适当的方法 解决方案的比较 示例用例 QThread - 具有可选事件循环的低级 API QThread 是 Qt 中所有线程控制的基础,每个 QThread 实例表示和控制一个

qstring-【qt】qt中使用QZXing扫描二维码出错

问题描述 [qt]qt中使用QZXing扫描二维码出错 如题,使用QZXing扫描二维码的时候参考了经典程序http://www.oschina.net/code/snippet_593514_22430,由于我不需要截图,而是直接把摄像头拍下的一幅图进行解码即可,所以我就写成了 QZXing decoder; QString qrmsg = decoder.decodeImage(image);//image是QImage类型,大小为(150,150) if(qrmsg.isEmpty())

控制-main.cpp在QT中起到的作用是什么?

问题描述 main.cpp在QT中起到的作用是什么? 是可以控制项目中其他窗口程序的执行先后顺序么? 还有有办法让 QVector val(100000); int n; double y; while(n<100000) { y=val[n]; n++ } double型的参数能直接从Qvector里被赋值么?上面的赋值对不对? 解决方案 main() 函数是程序的入口点. 几乎总是这样,在使用Qt时,main() 函数仅仅被用来完成一些初始化工作在将控制权交给Qt前. 参数 argc 为命令

[Qt教程] 第29篇 XML(三)Qt中的SAX

[Qt教程] 第29篇 XML(三)Qt中的SAX 楼主  发表于 2013-5-21 22:27:59 | 查看: 615| 回复: 5 Qt中的SAX 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 我们前面讲述了用DOM的方法对XML文档进行操作,DOM实现起来很灵活,但是这样也就使得编程变得复杂了些,而且我们前面也提到过,DOM需要预先把整个XML文档都读入内存,这样就使得它不适合处理较大的文件.下面我们讲述另一种读取

Linux系统下QT中的多线程编程

Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功能.为了满足 用户构造复杂图形界面系统的需求,Qt 提供了丰富的多线程编程支持. Qt 作为一种基于 C++ 的跨平台 GUI 系统,能够提供给用户构造图形用户界面的强大功能.为了满足 用户构造复杂图形界面系统的需求,Qt 提供了丰富的多线程编程支持.从 2.2 版本开始,Qt 主要从下 面三个方面对多线程编程提供支持:一.构造了一些基本的与平台无关的线程类:二.提交用户自定义事 件的 Thread-saf

c++-Qt中,怎么链接写好的C++功能实现

问题描述 Qt中,怎么链接写好的C++功能实现 在Qt中,怎么链接写好的C++功能实现 在Qt中,怎么链接写好的C++功能实现 在Qt中,怎么链接写好的C++功能实现 解决方案 Qt Manual中有对Library加载的详细说明,静态库只要加头文件所在目录,在代码中包含需要的头文件,并设置静态库lib所在目录到库目录中: 如果是dll,则需要dll import/export来标识需要导入/导出的类,然后设置lib相关目录,则可以在代码中使用dll中的类和函数了. 解决方案二: 链接无非就是链

c++-qt中函数参数类型不同也能实现其功能?

问题描述 qt中函数参数类型不同也能实现其功能? 图中data为QByteArray类型,而函数原型为const char类型,broadcast为枚举类型,而函数原型为hostaddress类型.为什么不同也能够实现其功能呢? 解决方案 这里发生了隐式类型转换 QString raw_string = ""haasd123ha""; QByteArray byte_instrument = raw_string.toLocal8Bit(); const char

qt c++-Qt中,到底如何实现主窗口和子窗口之间的通信?

问题描述 Qt中,到底如何实现主窗口和子窗口之间的通信? RT,比如,当子窗口关闭时,重新打开主窗口.这个是如何通信的,希望能给上例子.我知道是用信号和槽,可是两个窗口(类)之间的信号和槽我还不太会.网上也没找到具体的例子.希望大婶们能给个好点的直观的例子. 解决方案 主窗体类为A,子窗体类为B,在A中实例化B,其对象为b,关闭b,但不要释放b,调用b的public方法返回数据.仔细理解. void A::buttonClick(){ B b; b.exec(); b.getData();} 或

qt中格子布局删除布局中的控件,行数未减少

问题描述 qt中格子布局删除布局中的控件,行数未减少 //原先这个格子布局中有4个按钮,现在删除第一个的按钮,在最后以后添加一个按钮. QLayoutItem* pDeleteItem(NULL); pDeleteItem = m_pGridLayout->itemAt(0); if(pDeleteItem != NULL) { QWidget* pWidget = pDeleteItem->widget(); m_pGridLayout->removeWidget(pWidget);