QList
0、說明
QList<T>
一個QList是存儲相同類型一組數據的列表。
QStringList是從QList<String>繼承而來,並添加了一些好用的方法,如join()、filter、split()。
1)構造
QList<QString> list = { "one", "two", "three" };
2)增刪
insert(), replace(), removeAt(), move() 和 swap()。
append(), operator<<(), operator+=(), prepend(), removeFirst() 和 removeLast()
list << "four" << "five";
3)訪問
list[i] 與 list.at(i)
at比[ ]速度快,因為不會深拷貝
訪問並移除
takeAt(), takeFirst(), and takeLast()
4)查找
indexOf() 、 lastIndexOf()
5)迭代器
Java樣式:QListIterator 和 QMutableListIterator
STL樣式:QList::const_iterator 和 QList::iterator
6)迭代
//① for (int i = 0; i < list.size(); ++i) { if (list.at(i) == "Jane") cout << "Found Jane at position " << i << Qt::endl; } //② while (!list.isEmpty()) delete list.takeFirst();
1、模塊和加載項
Header: | #include <QList> |
qmake: | QT += core |
Inherited By: |
2、構造
QList<QString> list = { "one", "two", "three" };
QList(QList<T> other) | 另一個List的副本 |
QList() | 空List |
5、靜態方法
QList<T> | fromVector(const QVector<T> &vector) | 從Vector轉化 |
6、實例方法
返回值類型 |
方法 |
說明 |
QList<T> & bool QList<T> QList<T> & QList<T> & QList<T> & QList<T> & bool T |
operator=(QList<T> other) operator!=(QList<T> other) operator+(QList<T> other) operator+=(QList<T> other) operator+=(T value) operator<<(QList<T> other) operator<<(T value) operator==(QList<T> other) operator[](int i) |
賦值 判斷兩個QList是否不相等 往List末尾加入另一個QList 往List末尾加入另一個QList 往List末尾加入單個元素 往List末尾加入另一個QList 往List末尾加入單個元素 判斷兩個QList是否相等 list[i]提取索引i |
void | append(T value) append(QList<T> value) |
往List最后添加元素,可以一次添加一個,也可以一次添加一個List |
T | at(int i) | 訪問 |
T | back() | 最后一個元素 |
QList::iterator QList::const_iterator |
begin() | STL迭代器,指向第一個元素 |
QList::const_iterator | cbegin() | const STL迭代器,指向第一個元素 |
QList::const_iterator | cend() | const STL迭代器,指向最后一個元素之后的邏輯元素 |
void | clear() | 清空List |
QList::const_iterator | constBegin() | const STL迭代器,指向第一個元素 |
QList::const_iterator | constEnd() | const STL迭代器,指向最后一個元素之后的邏輯元素 |
bool | contains(T value) | List中是否包含指定元素 |
int | count(T value) count() |
統計數量 |
QList::const_reverse_iterator | crbegin() | const STL逆序迭代器,指向逆序第一個元素 |
QList::const_reverse_iterator | crend() | const STL逆序迭代器,指向逆序最后一個元素之后的元素 |
bool | empty() | 是否為空 |
QList::iterator QList::const_iterator |
end() | STL迭代器,指向最后一個元素之后的邏輯元素 |
bool | endsWith(T value) | List是否以value結尾 |
QList::iterator | erase(QList::iterator pos) erase(QList::iterator begin, QList::iterator end) |
迭代器,移除指定元素 |
T | first() | 第一個元素 |
T | front() | 等同於first() |
int | indexOf(T value, int from = 0) | 查找List中value第一次出現的位置 |
void QList::iterator |
insert(int i, T value) insert(QList::iterator before, T value) |
在指定位置插入 |
bool | isEmpty() | 是否為空 |
T | last() | 最后一個元素 |
int | lastIndexOf(T value, int from = -1) | 逆序查找List中value第一次出現的位置 |
int | length() | List長度,等同於count() |
QList<T> | mid(int pos, int length = -1) | 從pos開始長度為length的子List |
void | move(int from, int to) | 把list[from]移動到list[to],原來list[from+1]到list[to]前移 |
void | pop_back() | 等同於removeLast(),移除最后一項 |
void | pop_front() | 等同於removeFirst(),移除第一項 |
void | prepend(T value) | 在開頭添加元素 |
void | push_back(T value) | 等同於append(),在末尾添加元素 |
void | push_front(T value) | 等同於prepend(),在開頭添加元素 |
QList::reverse_iterator QList::const_reverse_iterator |
rbegin() | STL樣式迭代器,指向逆序第一個元素 |
int | removeAll(T value) | 移除List中的所有value |
void | removeAt(int i) | 移除list[i] |
void | removeFirst() | 移除第一個元素 |
void | removeLast() | 移除最后一個元素 |
bool | removeOne(T value) | 移除List中的第一個value |
QList::reverse_iterator QList::const_reverse_iterator |
rend() | STL樣式逆序迭代器,指向逆序最后一個元素 |
void | replace(int i, T value) | 替換指定位置的元素,等同於list[i]=value |
void | reserve(int alloc) | 保留alloc個元素的空間 |
int | size() | List中的元素數 |
bool | startsWith(T value) | List是否以value開始 |
void | swap(QList<T> &other) | 交換兩個List的元素 |
void | swapItemsAt(int i, int j) | 交換List中位置i、j的元素 |
T | takeAt(int i) | 移除並返回list[i] |
T | takeFirst() | 移除並返回第一個元素 |
T | takeLast() | 移除並返回最后一個元素 |
QVector<T> | toVector() | QList轉QVector |
T | value(int i) value(int i, T defaultValue) |
等同於list[i],第二個方法指定如果不存在這個元素時返回的默認元素 |
QStringList
0、說明
專門存儲String的List。
QStringList繼承自QList<QString>,所有QList的方法都可以用於QStringList,不過QStringList還額外提供了一些更方便的方法。
1)初始化
QStringList fonts = { "Arial", "Helvetica", "Times" };
2)添加元素
insert() 、append()、 operator+=() 、operator<<()
其中operator<<()最方便,且能一次加多個元素:
fonts << "Courier" << "Verdana";
3)迭代
//①索引,標准C++ for循環 for (int i = 0; i < fonts.size(); ++i) cout << fonts.at(i).toLocal8Bit().constData() << Qt::endl; //②Java樣式迭代器 QStringListIterator javaStyleIterator(fonts); while (javaStyleIterator.hasNext()) cout << javaStyleIterator.next().toLocal8Bit().constData() << Qt::endl; //③STL樣式迭代器 QStringList::const_iterator constIterator; for (constIterator = fonts.constBegin(); constIterator != fonts.constEnd(); ++constIterator) cout << (*constIterator).toLocal8Bit().constData() << Qt::endl;
4)連接
用指定分隔符連接:join( seq )
QStringList fonts = ["Arial", "Helvetica", "Times", "Courier"] QString str = fonts.join(", "); // str == "Arial, Helvetica, Times, Courier"
首尾連接:+
5)分割:split( seq )
QStringList list; list = str.split(','); // list: ["Arial", "Helvetica", "Times", "Courier"]
6)排序:sort()
7)篩選:filter()
提取包含指定字串、指定正則表達式的子串
8)查找:contains()、indexOf()、lastIndexOf()
這三個函數功能分別是:是否包含指定字串、指定子串的第一個位置、逆向查看指定子串的第一個位置
9)替換:replaceInStrings()
對QStringList中的每個QString采用同一個替換方法,相當於對List中的所有QString調用QString::replace()方法:
QStringList files; files << "$QTDIR/src/moc/moc.y" << "$QTDIR/src/moc/moc.l" << "$QTDIR/include/qconfig.h"; files.replaceInStrings("$QTDIR", "/usr/lib/qt"); // files: [ "/usr/lib/qt/src/moc/moc.y", ...]
1、模塊和加載項
Header: | #include <QStringList> |
qmake: | QT += core |
Inherits: | QList |
2、構造
QStringList(InputIterator first, InputIterator last) | 用迭代器中[first , last)中的內容構造QStrintList,該InputIterator的內容必須是QString |
QStringList(std::initializer_list<QString> args) | 這種構造方法說明可以用 QStringList sl = { "Apple" , "Banana" , "Orange" }; 形式來構造QStringList |
QStringList(QList<QString> other) | 用一個QList<QString>來構造QStringList |
QStringList(QString str) | 構造只有單個QString元素str的QStringList |
QStringList() | 構造空QStringList |
6、實例方法
除了所有QList的方法外,還有一些QStringList獨有的方法,這里只單列出后者:
返回值類型 |
方法 |
說明 |
QStringList & | operator=(QList<QString> other) operator+(QStringList other) operator<<(QString str) operator<<(QStringList other) operator<<(QList<QString> other) |
賦值 連接 用<<往QStringList中加元素,可以一次加一個QString,也可以一次加一個List或QStringList中的所有元素 |
bool | contains(QString str, Qt::CaseSensitivity cs = Qt::CaseSensitive) | 是否包含指定QSTRING |
QStringList | filter(QString str, Qt::CaseSensitivity cs = Qt::CaseSensitive) filter(QRegExp rx) filter(QRegularExpression re) |
篩選所有符合要求的子串構成新的QStringList,后兩項說明可以用正則 |
int | indexOf(QRegExp rx, int from = 0) indexOf(QRegularExpression re, int from = 0) |
返回第一個符合正則的子串的位置 |
QString | join(QString separator) join(QChar separator) |
用指定分隔符連接QStringList中的所有QString |
int | lastIndexOf(QRegExp rx, int from = -1) lastIndexOf(QRegularExpression re, int from = -1) |
逆向查找,返回第一個符合正則的子串的位置 |
int | removeDuplicates() | 移除所有List中所有相同的QString,只保留一個 |
QStringList & | replaceInStrings(QString before, QString after, Qt::CaseSensitivity cs = Qt::CaseSensitive) replaceInStrings(QRegExp rx, const QString &after) replaceInStrings(QRegularExpression re, const QString &after) |
用相同規則對List中所有QString進行替換 |
void | sort(Qt::CaseSensitivity cs = Qt::CaseSensitive) | 排序 |