一步步学Qt,第十天-Q”STL”与STL-迭代器-补充点

一步步学Qt,第十天-Q”STL”与STL-迭代器-补充点


在之前讨论迭代器的时候忘记了一个东西——隐含共享


隐含共享implicit sharing,或叫做“写时复制”。看代码示例:

 //get values
    QListIterator<int> qlistIterator(list);
    while(qlistIterator.hasNext()){
        cout << qlistIterator.next() << setw(2);
    }
    cout << endl;
在code所示的例子中,若使用STL风格,如下:

//get values by STL
    QList<int>::iterator qlistIteratorSTL = list.begin();
    while(qlistIteratorSTL != list.end()){
        cout << *qlistIteratorSTL++ << setw(2);
    }
在使用Java风格的时候,有了这么一种机制——写时复制,使用这种风格的 时候不会复制产生一个List的副本,在后台会自动的生成一个临时的List副本。正因为有了写时复制的最优化过程,我们在复制一个容器的时候可以和复制一个指针比拟。

写时复制的优点:

优化过程,简单,不需要我们去顾及。不过也不能说她就一定是好的哦。具体你可以参考这里 更多请参看这里,还有这里



posted @ 2011-09-02 19:14  Podevor  阅读(262)  评论(0编辑  收藏  举报