zoukankan      html  css  js  c++  java
  • QT,QVector 基本用法,遍历[实例讲解]

    QVector,是Qt对所有数组的封装,比如我们想要一个int类型数组,我们原先会写int array[10],我们在Qt里可以写QVector <int> array(10),赋值的时候,我们依然可以照旧array[5]=4;想获取某一项的值也还可以array[9],也就是说,原来的特性我们还可以用。

    那么QVector有什么好处呢?
    我们可以用count函数获知数组中有多少个元素,方便遍历,原先我们必须预定义好大小,而用QVector我们虽然最好也先定义好大小,但是预先不定义也可以。

    我们可以使用append函数或者<<操作符来在数组最后端添加元素而不用担心溢出问题。

    需要包含头文件:
    #include<QVector>
    添加元素:
    QVector<QString> strArray;
    strArray.append("Hello"); //可以这样
    strArray<<"World!"; //也可以这样
    strArray<<"MyName"<<"is"<<"LEO";//也可以这样加上个元素
    //现在strArray总共有5个字符串元素,strArray.count()==5
    遍历:
    QVector<QString>::iterator iter;
    for (iter=strArray.begin();iter!=strArray.end();iter++)
    qDebug() << *iter << "\0";
    插入:
    strArray.insert(1,"这就是在hello和world之间添加");
    删除:
    strArray.remove(1); //删除第一个元素,从0开始
    strArray.remove(1,3); //从1开始,删除3个元素
    复制(取代):
    strArray.replace(1,"LEO"); //删除第一个元素,从0开始
    上述,除了append()和replace()这两个函数外,其它函数会比较慢,因为在内存中移动一个位置时,这些函数会使向量容器内的对象要移动许多次!如果你想要一个能够在中部快速插入和删除的容器时,可以使用QList或者QLinkedList。

    调用at()函数来读取对象会比使用operator[]()读取速度更快,因为这不会使用深度复制(deep copy)。

    调用data()函数也可以访问保存在QVector的数据。这个函数会返回指向向量容器的第一个对象的指针。这样,你就可以使用指针来访问和修改向量容器内的对象。你可以使用指针将一个QVector向量容器传递给接收普通C++数组的函数。

    contains()函数是用来查找向量容器内是否含有某个对象。

    count()函数可以找出某个对象出现的次数。

    resize()函数可以在任何时候改变QVector向量容器的体积。如果新的向量容器体积比以前的要大,QVector也许需要重新分配整个向量容器。QVector会预先分配两倍于实际数据的大小空间,从而减少再分配的次数。

    reserve()函数,如果你事先知道向量容器大概包含多少个对象,你可以调用这个函数来预先分配一定的内存大小空间

    capacity()函数会告诉你向量容器所占内存的实际大小空间。
    ————————————————
    版权声明:本文为CSDN博主「三月桃花浪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/leoeitail/article/details/74640352

  • 相关阅读:
    Compression algorithm (deflate)
    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    gzip压缩算法: gzip 所使用压缩算法的基本原理
    Decompressing a GZip Stream with Zlib
    Frequently Asked Questions about zlib
    how to decompress gzip stream with zlib
    自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    C语言抓http gzip包并解压 失败 C/C++ ChinaUnix.net
  • 原文地址:https://www.cnblogs.com/chinasoft/p/15243246.html
Copyright © 2011-2022 走看看