精华内容
下载资源
问答
  • QMap迭代器

    2019-01-23 14:51:00
    QMap迭代器 QMap<int, QString> intToStr; intToStr[1] = "test" for (auto iter = intToStr.begin(); iter != intToStr.end(); ++iter) { //int aa = *iter; ...
    QMap<int, QString> intToStr;
    intToStr[1] = "test"
    for (auto iter = intToStr.begin(); iter != intToStr.end(); ++iter)
        {
            //int aa = *iter;
            QString two = iter.value();
            QString test = *iter;//对迭代器解引用是返回value值,按我的理解迭代器应该指向的是那一对数据啊
        }

     

    posted on 2019-01-23 14:51 maolike 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/likemao/p/10308963.html

    展开全文
  • QMap迭代器——QMapIterator

    千次阅读 2017-03-30 11:46:22
    QMap迭代器,看的时候,顺便翻译了。 QMapIterator 类提供了一个Java风格的常量迭代器。 Header: #include qmake: QT += core § 公共函数成员列表,包括继承成员。 公共函数   QMapIter

    QMapIterator Class

    QMap迭代器,看的时候,顺便翻译了。

    QMapIterator 类提供了一个Java风格的常量迭代器。

    Header:

    #include <QMapIterator>

    qmake:

    QT += core

    § 公共函数成员列表,包括继承成员。

    公共函数

     

    QMapIterator(const QMap<Key, T> & map)

    bool

    findNext(const T & value)

    bool

    findPrevious(const T & value)

    bool

    hasNext() const

    bool

    hasPrevious() const

    const Key &

    key() const

    Item

    next()

    Item

    peekNext() const

    Item

    peekPrevious() const

    Item

    previous()

    void

    toBack()

    void

    toFront()

    const T &

    value() const

    QMapIterator &

    operator=(const QMap<Key, T> & map)

    详细描述

    QMapIterator 类为QMapQMultiMap,提供了一个Java风格的常量迭代器。

    QMapJava风格迭代器和STL风格迭代器。Java风格迭代器比STL风格迭代器更高级而且更好用,但其效率不及STL风格迭代器。

    使用QMapIterator<Key, T>对一个QMap (或一个 QMultiMap)进行迭代。当你需要在迭代时能够修改map,则需要使用QMutableMapIterator 。

    QMutableMapIterator 迭代器的构造函数以一个QMap作为参数。当构造完成后,迭代器位于map的最开始(即表的第一项之前)。下面的代码描述了怎样按顺序迭代所有元素。


    QMap<int, QWidget *> map;...
    QMapIterator<int, QWidget *> i(map);
    while(i.hasNext()) {
    I.next();
    qDebug() << i.key() << “:” << i.value();
    }

     

    next()函数返回map中的下一个项。Key()value()函数返回上一个项的键(key)和数值(value)

    不同于STL风格迭代器,Java风格迭代器地向项目之间而不是指向map中的项。第一次调用next(),迭代器指向第一项和第二项之间,返回第一项;第二次调用next(),迭代器指向第二项和第三项之间,返回第二项,以此类推。

    下面是如何反向迭代访问map中的元素项目。 

    QMapIterator<int, QWidget *> i(map);
    i.toBack();
    while(i.hasPrevious()) {
    I.previous();
    qDebug() << i.key() << “:” << i.value();
    }

    如果要遍历表,可在循环中使用findNext() or findPrevious(),例如:

    QMapIterator<int, QWidget *> i(map);
    i.toBack();
    while(i.hasPrevious()) {
    I.previous();
    qDebug() << i.key() << “:” << i.value();
    }

    在相同的map上可以使用多个迭代器。如果在使用一个QMapIterator 时,map被修改了,QMapIterator仍然按照原始的表继续进行迭代,被修改的项将被忽略。

    See also QMutableMapIterator and QMap::const_iterator.

    成员函数详解

    QMapIterator::​QMapIterator(const QMap<KeyT> & map)

    Constructs an iterator for traversing map. The iterator is set to be at the front of the map (before the first item).

    See also operator=().

    bool QMapIterator::​findNext(const T & value)

    Searches for value starting from the current iterator position forward. Returns true if a (key, value) pair with value value is found; otherwise returns false.

    After the call, if value was found, the iterator is positioned just after the matching item; otherwise, the iterator is positioned at the back of the container.

    See also findPrevious().

    bool QMapIterator::​findPrevious(const T & value)

    Searches for value starting from the current iterator position backward. Returns true if a (key, value) pair with value value is found; otherwise returns false.

    After the call, if value was found, the iterator is positioned just before the matching item; otherwise, the iterator is positioned at the front of the container.

    See also findNext().

    bool QMapIterator::​hasNext() const

    Returns true if there is at least one item ahead of the iterator, i.e. the iterator is not at the back of the container; otherwise returnsfalse.

    See also hasPrevious() and next().

    bool QMapIterator::​hasPrevious() const

    Returns true if there is at least one item behind the iterator, i.e. the iterator is not at the front of the container; otherwise returnsfalse.

    See also hasNext() and previous().

    const Key & QMapIterator::​key() const

    Returns the key of the last item that was jumped over using one of the traversal functions (next(), previous(), findNext(),findPrevious()).

    After a call to next() or findNext(), key() is equivalent to peekPrevious().key(). After a call to previous() or findPrevious(), key() is equivalent to peekNext().key().

    See also value().

    Item QMapIterator::​next()

    Returns the next item and advances the iterator by one position.

    Call key() on the return value to obtain the item's key, and value() to obtain the value.

    Calling this function on an iterator located at the back of the container leads to undefined results.

    See also hasNext(), peekNext(), and previous().

    Item QMapIterator::​peekNext() const

    Returns the next item without moving the iterator.

    Call key() on the return value to obtain the item's key, and value() to obtain the value.

    Calling this function on an iterator located at the back of the container leads to undefined results.

    See also hasNext(), next(), and peekPrevious().

    Item QMapIterator::​peekPrevious() const

    Returns the previous item without moving the iterator.

    Call key() on the return value to obtain the item's key, and value() to obtain the value.

    Calling this function on an iterator located at the front of the container leads to undefined results.

    See also hasPrevious(), previous(), and peekNext().

    Item QMapIterator::​previous()

    Returns the previous item and moves the iterator back by one position.

    Call key() on the return value to obtain the item's key, and value() to obtain the value.

    Calling this function on an iterator located at the front of the container leads to undefined results.

    See also hasPrevious(), peekPrevious(), and next().

    void QMapIterator::​toBack()

    Moves the iterator to the back of the container (after the last item).

    See also toFront() and previous().

    void QMapIterator::​toFront()

    Moves the iterator to the front of the container (before the first item).

    See also toBack() and next().

    const T & QMapIterator::​value() const

    Returns the value of the last item that was jumped over using one of the traversal functions (next(), previous(), findNext(),findPrevious()).

    After a call to next() or findNext(), value() is equivalent to peekPrevious().value(). After a call to previous() or findPrevious(), value() is equivalent to peekNext().value().

    See also key().

    QMapIterator & QMapIterator::​operator=(const QMap<KeyT> & map)

    Makes the iterator operate on map. The iterator is set to be at the front of the map (before the first item).

    See also toFront() and toBack().

    展开全文
  • Qt QMap迭代器的问题

    2021-04-02 09:15:35
    Qt QMap只读迭代器的问题 #include <QCoreApplication> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QMap<QString,QString>map; map.insert(...

    Qt QMap只读迭代器的问题

    #include <QCoreApplication>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QMap<QString,QString>map;
        map.insert("beijing","111");
        map.insert("shanghai","021");
        map.insert("nanjing","025");
        QMapIterator<QString,QString>i(map);
        for(;i.hasNext();)
        {
            i.next();
            qDebug()<<" "<<i.key()<<" "<<i.value();
        }
    
        QMutableMapIterator<QString,QString> mi(map);
        if(mi.findNext("025"))
            mi.setValue("010");
    
        i.toFront();
         for(;i.hasNext();)
         {
             i.next();
             qDebug()<<" "<<i.key()<<" "<<i.value();
         }
    
        QMapIterator<QString,QString>i2(map);
        for(;i2.hasNext();)
        {
            i2.next();
            qDebug()<<" "<<i2.key()<<" "<<i2.value();
        }
    
    //    QMapIterator<QString,QString>modi(map);
    //    qDebug()<<" ";
    //    for(;modi.hasNext();)
    //    {
    //        modi.next();
    //        qDebug()<<" "<<modi.key()<<" "<<modi.value();
    //    }
    //    return a.exec();
    }
    
    

    输出结果:

    原文 
      "beijing"   "111"
      "nanjing"   "025"
      "shanghai"   "021"
    修改后原遍历器: 
      "beijing"   "111"
      "nanjing"   "025"
      "shanghai"   "021"
    修改后重建的遍历器: 
      "beijing"   "111"
      "nanjing"   "010"
      "shanghai"   "021"
    

    从上面的输出结果可以看到 建立QMap只读迭代器之后,修改QMap的内容,QMap只读迭代器输出的内容还是原内容。
    把上面12行和第19行的 QMapIterator 只读迭代器 改成 QMutableMapIterator 读写迭代器 之后,再运行程序

    结果如下:

    原文 
      "beijing"   "111"
      "nanjing"   "025"
      "shanghai"   "021"
    修改后原遍历器: 
      "beijing"   "111"
      "nanjing"   "010"
      "shanghai"   "021"
    修改后重建的遍历器: 
      "beijing"   "111"
      "nanjing"   "010"
      "shanghai"   "021"
    

    可见 ,读写迭代器在修改原文后,输出内容也改变,而只读迭代器不改变输出内容。

    展开全文
  • QMapIterator> #include <QMutableMapIterator> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QMap<QString, QString> map;

    文章目录

    1.使用示例

    #include <QCoreApplication>
    #include <QMapIterator>
    #include <QMutableMapIterator>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        QMap<QString, QString> map;
        map.insert("Paris", "France");
        map.insert("Guatemala City", "Guatemala");
        map.insert("Mexico City", "Mexico");
        map.insert("Moscow", "Russia");
    
        QMapIterator<QString,QString> i(map);
        while(i.hasNext()) {
            i.next();
            qDebug() << i.key() << " : " << i.value();
        }
        if(i.findPrevious("Mexico")) qDebug() << "find 'Mexico'";  // 向前查找键的值
    
        QMutableMapIterator<QString, QString> j(map);
        while (j.hasNext()) {
            if (j.next().key().endsWith("City")) // endsWith()是QString类的函数
                j.remove();                      // 删除含有“City”结尾的键的项目
        }
        while(j.hasPrevious()) {
            j.previous();          // 现在的键值对为(paris,France),(Moscow,Russia)
            qDebug() << j.key() << " : " << j.value();
        }
        
        return a.exec();
    }
    
    

    在这里插入图片描述

    展开全文
  • QMap,QString> map; map.insert("beijing","111"); map.insert("shanghai","021"); map.insert("nanjing","025")...**问题是用头一次遍历的迭代器转到第一项前面再重新遍历修改完以后的QMap时输出的是未修改以前的**
  • qmap的成员函数insert

    2020-11-12 10:32:13
    看了下qt5.6.2 qmap的Insert的一个实现方法。 利用模板方法,返回一个qmap迭代器。就是刚插入的这个结点
  • QMap iterator crash实例

    2021-03-10 17:44:26
    最近遇到一个bug, 关于嵌套调用QMap迭代器,大循环只循环一次,crash信息提示停在`iterator::operator++ Qt5Cored.dll!QMapNodeBase::nextNode() Line 89 C++ demo64.exe!QMapNode<__int64,QString>::...
  • STL风格迭代器兼容Qt和STL的通用算法,而且再速度上进行了优化。每一个容器都有两个STL风格迭代器类型:一个提供了只读访问,另一个提供了读/写访问。 2.使用示例 #include <QCoreApplication> #include <...
  • QMapIterator 类

    2020-05-04 20:54:38
    QMapIterator 类 为 QMap 类 以及 QMultiMap类 提供Java风格的常亮迭代器QMap既有java风格迭代器又有STL风格迭代器。java风格比STL风格的迭代器更高级也更容易使用;另一方面,java风格迭代器效率略低。 QMap...
  • QT QMapIterator

    千次阅读 2019-09-25 22:51:57
    QT的迭代器有两种类型:STL形式和JAVA形式。 QT的STL形式的迭代器,和...这其中,就有QT的迭代器QMapIterator。 QMapIterator的公共函数如下: QMapIterator(const QMap<Key, T> &map) bool fi...
  • QMapIterator Class

    2017-11-02 20:33:15
    QMapIterator类为QMap和QMultiMap提供了一个java样式的const迭代器QMap有java风格的迭代器和STL样式的迭代器两种。与STL样式的迭代器相比,java风格的迭代器更高级,更容易使用;另一方面,他们的效率稍微低一些...
  • Qlist 的 java风格迭代器,代码如下: #include <QMap> #include <QListIterator> //只读 #include <QMutableListIterator> //读写 #include <QDebug> //测试java风格的迭代器 int main...
  • Qt使用迭代器修改value

    千次阅读 2019-07-25 14:41:34
    代码如下: #include <QDebug> int main(int argc,char *argv[]) ... QMap<QString,QString> map; map.insert("beijing","110"); map.insert("shanghai","021"); map.insert("nanjing","025");...
  • QMapIterator类为QMap和QMultiMap提供了Java样式的常量迭代器QMap同时具有Java样式的迭代器和STL样式的迭代器。 Java风格的迭代器比STL风格的迭代器更高级,更易于使用。另一方面,它们的效率略低。 QMapIterator...
  • 今天同事在码码时遇到这么一个问题:这段代码报错for (QMap&lt;QString, uConfig::ProjectInfo*&gt;::iterator it = m_projectInfos.begin(); it != m_projectInfos.end(); ++it) { QString str = it.key()...
  • 数据类型 foreach与QDebug宏 容器类 特点: 1.隐式共享,可重入,线程安全,即作为只读容器可被多个线程访问 2.QList<T>,T必须是可赋值类型,即T必须提供一个缺省的构造函数...QMap,QMultiMap,QHash,QMul...
  • Qt的容器类之容器,迭代器

    千次阅读 2016-12-13 13:55:44
    此文乃《Qt中的C++技术》的读书笔记。若喜欢,请支持图书作者。QT中的容器被分为两个大类:容器元素是一个值的,比如QVector,以及容器元素是一个(key, value)对的,比如QMap
  • QMapIterator Class Reference

    2010-07-05 16:01:01
    QMapIterator Class ...该类提供一个java风格const迭代器QMap和QMultiMap #include <QMapIterator> 公共函数: QMapIterator( const QMap<Key, T> &map) bool findNext...
  • QMap 和 QHash 区别

    千次阅读 2016-09-27 16:09:52
    1. QMap 是一个提供基于跳表(skip-list-based)字典的模板类。 2. QMap 是QT的一个通用容器类,它存储键值对{(key,value)pairs},并提供对和键(key)相关的值(value)进行... ② 当使用迭代器遍历一个QHash
  • QMap的key的使用 value的使用

    万次阅读 2015-09-22 16:05:36
    QMap 这样类型的map。如果要遍历该map,并且使用该map的key。 那么不能使用auto类型的迭代器。...必须使用QMap::iterator 这种类型的迭代器。 这样就可以调用key()方法获取key了。调用value()方法获取value了。
  • 有时候回遇见在循环中需要删除某个map元素的操作,如果直接remove其实会影响内部迭代器,这样操作会有问题。删除方式换为erase并更新迭代器即可 for (auto it = map.begin(); it != map.end();) if (it.value() %...
  • 容器 QMap类、 QHash类 QMap与QHash差别: ①QHash比QMap查找速度更快。 ②QHash以任意顺序存储,QMap以Key顺序存储数据。 ③QHash的Key必须提供operator=...Java风格迭代器 STL风格迭代器 新建控制台应用程序,项目
  • QMap和std::map的遍历

    万次阅读 2017-01-19 14:24:44
    两种遍历方式都使用迭代器: 1QMap使用Iterator.key(),和Iterator.value()方法获取第一个或第二个元素的值。 而std::map使用Iterator->first(), Iterator->second()来获取第一个或第二个元素的值。 ...
  • iterator QMap::end () 返回一个stl风格迭代器指向map最后一个项目之后的虚构项目。
  • 使用迭代器方式的问题是 erase 删除 后需要赋值给自身,不方便。 使用容器数量for来删除的问题是,删除后容器数量变化不合适。 最最最简单的就是使用QMapIterator QListIterator QSetIterator 这一类对象来操作。 ...
  • Qt总结之九:QMap中嵌套QList

    千次阅读 2018-12-27 22:31:49
    ::iterator 迭代器 一、初识  #include &lt;QtCore/QCoreApplication&gt; // #include &lt;QList&gt; #include &lt;QMap&gt; #include &lt;QDebug&gt; #include &lt;...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

qmap迭代器