QList和QVector使用

版權聲明:若無來源註明, Techie亮博客文章均爲原創。 轉載請以連接形式標明本文標題和地址:
本文標題:QList和QVector使用     本文地址: http://techieliang.com/2017/12/563/

1. 介紹

QVectorhtml

The QVector class is a template class that provides a dynamic array.app

QVector<T> is one of Qt’s generic container classes. It stores its items in adjacent memory locations and provides fast index-based access.less

QList<T>, QLinkedList<T>, QVector<T>, and QVarLengthArray<T> provide similar APIs and functionality. They are often interchangeable, but there are performance consequences. Here is an overview of use cases:ide

QVector should be your default first choice. QVector<T> will usually give better performance than QList<T>, because QVector<T> always stores its items sequentially in memory, where QList<T> will allocate its items on the heap unless sizeof(T) <= sizeof(void*) and T has been declared to be either a Q_MOVABLE_TYPE or a Q_PRIMITIVE_TYPE using Q_DECLARE_TYPEINFO. See the Pros and Cons of Using QList for an explanation.
However, QList is used throughout the Qt APIs for passing parameters and for returning values. Use QList to interface with those APIs.
If you need a real linked list, which guarantees constant time insertions mid-list and uses iterators to items rather than indexes, use QLinkedList.函數

Note: QVector and QVarLengthArray both guarantee C-compatible array layout. QList does not. This might be important if your application must interface with a C API.post

Note: Iterators into a QLinkedList and references into heap-allocating QLists remain valid as long as the referenced items remain in the container. This is not true for iterators and references into a QVector and non-heap-allocating QLists.spa

Here’s an example of a QVector that stores integers and a QVector that stores QString values:orm

更多請見QVectorhtm

QList:rem

The QList class is a template class that provides lists.

QList<T> is one of Qt’s generic container classes. It stores items in a list that provides fast index-based access and index-based insertions and removals.

QList<T>, QLinkedList<T>, and QVector<T> provide similar APIs and functionality. They are often interchangeable, but there are performance consequences. Here is an overview of use cases:

QVector should be your default first choice. QVector<T> will usually give better performance than QList<T>, because QVector<T> always stores its items sequentially in memory, where QList<T> will allocate its items on the heap unless sizeof(T) <= sizeof(void*) and T has been declared to be either a Q_MOVABLE_TYPE or a Q_PRIMITIVE_TYPE using Q_DECLARE_TYPEINFO. See the Pros and Cons of Using QList for an explanation.
However, QList is used throughout the Qt APIs for passing parameters and for returning values. Use QList to interface with those APIs.
If you need a real linked list, which guarantees constant time insertions mid-list and uses iterators to items rather than indexes, use QLinkedList.

Note: QVector and QVarLengthArray both guarantee C-compatible array layout. QList does not. This might be important if your application must interface with a C API.

Note: Iterators into a QLinkedList and references into heap-allocating QLists remain valid as long as the referenced items remain in the container. This is not true for iterators and references into a QVector and non-heap-allocating QLists.

更多請見QList

QList<T>, QLinkedList<T>, and QVector<T>等使用操做近似,下述範例僅提供QList的

2. QList使用

2.1. 簡單範例

  1. #include <QList>
  2. #include <QDebug>
  3. QList<QString> m_list;
  4. m_list.append("a");//尾插入
  5. m_list.append("b");
  6. m_list.append("c");
  7. qDebug()<<m_list.at(0)<<
  8. m_list[1]<<
  9. m_list[m_list.size()-1];
  10. qDebug()<<m_list.first()<<m_list.last();//取首尾值
  11. m_list.prepend("t");//頭插入
  12. qDebug()<<m_list.at(0);
  13. qDebug()<<m_list.takeAt(2);//取出值(會刪除原值)
  14. qDebug()<<m_list.at(2);

運行結果

  1. "a" "b" "c"
  2. "a" "c"
  3. "t"
  4. "b"
  5. "c"

2.2. 其餘函數

insert在指定位置插入
swap交換兩個位置的值
contains是否包含判斷
count查找某個值的個數
indexOf找某個值對應的位置

2.3. 迭代器風格

支持Java和STL風格,詳情請見Qt容器介紹

 

轉載請以連接形式標明本文標題和地址: Techie亮博客 » QList和QVector使用
相關文章
相關標籤/搜索