[QT プログラミング シリーズ-21]: 基本フレームワーク - QT 共通データ構造: QString、QList、QVector、QMap、QHash、QSet、QPair の詳細説明

目次

1 Q文字列

2 Qリスト

3 Qベクトル

4 Qマップ

5 Qハッシュ

6 Qセット

7 Qペア


1 Q文字列

QString は、Qt で文字列を保存および操作するために使用されるクラスです。豊富な文字列処理メソッドと関数を提供します。

以下は、QString の主な機能と一般的な操作の一部です。

  1. QString オブジェクトを作成します。

    QString str = "Hello";                    // 直接初始化
    QString str2("World");                     // 使用字符串字面值初始化
    QString str3 = QString("Bonjour");         // 使用构造函数进行初始化
    
  2. 文字列の内容と長さを取得します。

    QString str = "Hello";
    QString str2 = "World";
    QString combined = str + " " + str2;       // 字符串拼接
    int length = str.length();                  // 获取字符串长度
    
  3. 文字列の比較と検索:

    QString str = "Hello";
    QString str2 = "hello";
    bool result = str.compare(str2, Qt::CaseInsensitive);   // 比较字符串,忽略大小写
    int index = str.indexOf("l");                           // 查找子字符串的位置
    
  4. 文字列の分割と連結:

    QString str = "Hello,World,Qt";
    QStringList list = str.split(",");                 // 将字符串分割成字符串列表
    QString joined = list.join(" ");                    // 将字符串列表连接成一个字符串
    
  5. 文字列のフォーマットと変換:

    QString str = QString("%1 %2").arg(42).arg(3.14);    // 格式化字符串
    int num = str.toInt();                               // 字符串转换为整数
    double number = str.toDouble();                       // 字符串转换为浮点数
    
  6. 文字列の操作と変更:

    QString str = "Hello World";
    QString upper = str.toUpper();                        // 转换为大写字母
    QString lower = str.toLower();                        // 转换为小写字母
    QString trimmed = str.trimmed();                       // 去除首尾空格
    QString replaced = str.replace("World", "Qt");         // 字符串替换
    

上記は、文字列を操作および処理するための他の多くのメソッドを提供する QString の一般的な操作の一部です。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

2 Qリスト

QList は、Qt に同じデータ型を格納するために使用される動的配列コンテナー クラスです。便利な挿入、削除、アクセス操作を提供し、反復子やアルゴリズムなどの関数をサポートします。

以下は、QList の主な機能と一般的な操作の一部です。

  1. QList オブジェクトを作成します。

    QList<int> list;                            // 创建一个空的整型列表
    QList<QString> strList = {"Hello", "World"}; // 使用初始化列表创建列表
    QList<double> *doubleList = new QList<double>; // 创建动态分配的列表
    
  2. 要素を追加および削除します。

    QList<int> list;
    list.append(42);                             // 在列表末尾添加元素
    list.prepend(17);                            // 在列表开头添加元素
    list.insert(2, 99);                           // 在指定位置插入元素
    list.removeFirst();                           // 删除第一个元素
    list.removeLast();                            // 删除最后一个元素
    list.removeAt(1);                             // 删除指定位置的元素
    list.clear();                                 // 清空列表
    
  3. 要素を取得および変更します。

    QList<QString> strList = {"Hello", "World"};
    QString first = strList.first();              // 获取第一个元素
    QString last = strList.last();                // 获取最后一个元素
    QString str = strList.at(1);                  // 获取指定位置的元素
    strList.replace(0, "Bonjour");                 // 替换指定位置的元素
    
  4. リストのサイズと走査:

    QList<int> list = {1, 2, 3, 4, 5};
    int size = list.size();                       // 获取列表的大小
    for (int i = 0; i < list.size(); ++i) {
        int value = list.at(i);                    // 使用索引遍历元素
        // 进行操作...
    }
    
  5. イテレータを使用して以下を走査します。

    QList<int> list = {1, 2, 3, 4, 5};
    QList<int>::iterator iter;
    for (iter = list.begin(); iter != list.end(); ++iter) {
        int value = *iter;                         // 使用迭代器遍历元素
        // 进行操作...
    }
    
  6. STL アルゴリズムとその他の操作:

    QList<int> list = {1, 2, 3, 4, 5};
    std::sort(list.begin(), list.end());           // 使用STL算法排序列表
    bool contains = list.contains(3);              // 列表是否包含指定元素
    int index = list.indexOf(4);                   // 查找元素的索引位置
    

上記は QList の一般的な操作の一部であり、コピー構築、ディープ コピー、要素アクセスなど、より多くのメンバー関数や機能も提供します。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

3 Qベクトル

QVector は、同じデータ型の要素を格納するための Qt の動的配列コンテナー クラスです。効率的なランダムアクセスと動的なサイズ変更を実現します。

QVector の主な機能と一般的な操作は次のとおりです。

  1. QVector オブジェクトを作成します。

    QVector<int> vector;                            // 创建一个空的整型向量
    QVector<QString> strVector = {"Hello", "World"}; // 使用初始化列表创建向量
    QVector<double> *doubleVector = new QVector<double>(); // 创建动态分配的向量
    
  2. 要素を追加および削除します。

    QVector<int> vector;
    vector.append(42);                                // 在向量末尾添加元素
    vector.prepend(17);                               // 在向量开头添加元素
    vector.insert(2, 99);                              // 在指定位置插入元素
    vector.removeFirst();                              // 删除第一个元素
    vector.removeLast();                               // 删除最后一个元素
    vector.removeAt(1);                                // 删除指定位置的元素
    vector.clear();                                    // 清空向量
    
  3. 要素を取得および変更します。

    QVector<QString> strVector = {"Hello", "World"};
    QString first = strVector.first();                 // 获取第一个元素
    QString last = strVector.last();                   // 获取最后一个元素
    QString str = strVector.at(1);                     // 获取指定位置的元素
    strVector.replace(0, "Bonjour");                    // 替换指定位置的元素
    
  4. ベクトルのサイズとトラバース:

    QVector<int> vector = {1, 2, 3, 4, 5};
    int size = vector.size();                          // 获取向量的大小
    for (int i = 0; i < vector.size(); ++i) {
        int value = vector.at(i);                       // 使用索引遍历元素
        // 进行操作...
    }
    
  5. イテレータを使用して以下を走査します。

    QVector<int> vector = {1, 2, 3, 4, 5};
    QVector<int>::const_iterator iter;
    for (iter = vector.begin(); iter != vector.end(); ++iter) {
        int value = *iter;                              // 使用迭代器遍历元素
        // 进行操作...
    }
    
  6. STL アルゴリズムとその他の操作:

    QVector<int> vector = {1, 2, 3, 4, 5};
    std::sort(vector.begin(), vector.end());           // 使用STL算法排序向量
    bool contains = vector.contains(3);                 // 向量是否包含指定元素
    int index = vector.indexOf(4);                      // 查找元素的索引位置
    

上記の操作に加えて、QVector はデータのコピー、メモリの事前割り当て、容量調整などの他の便利な機能も提供します。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

4 Qマップ

QMap は、キーと値のペア (Key-Value) 要素を格納するための Qt の連想コンテナ クラスです。効率的なキーベースの検索および挿入操作を提供します。

以下は、QMap の主な機能と一般的な操作の一部です。

  1. QMap オブジェクトを作成します。

    QMap<int, QString> map;                          // 创建一个空的整型到字符串的映射
    QMap<QString, int> strMap = {
         
         {"Alice", 26}, {"Bob", 32}}; // 使用初始化列表创建映射
    QMap<QString, double> *doubleMap = new QMap<QString, double>(); // 创建动态分配的映射
    
  2. 要素を追加および削除します。

    QMap<QString, int> map;
    map.insert("Alice", 26);                          // 插入键值对
    map.insert("Bob", 32);
    map["Charlie"] = 40;                              // 使用下标操作符插入或修改值
    map.remove("Bob");                                // 根据键删除元素
    map.clear();                                      // 清空映射
    
  3. 要素を取得および変更します。

    QMap<QString, int> map;
    map.insert("Alice", 26);
    map.insert("Bob", 32);
    int ageAlice = map.value("Alice");                 // 获取键对应的值
    int ageBob = map["Bob"];
    map["Charlie"] = 40;                               // 修改键对应的值
    
  4. クエリ操作:

    QMap<QString, int> map;
    map.insert("Alice", 26);
    map.insert("Bob", 32);
    bool containsBob = map.contains("Bob");           // 检查是否包含指定键
    int count = map.count();                          // 获取键值对的数量
    QMap<QString, int>::const_iterator iter = map.find("Alice"); // 查找键对应的迭代器
    if (iter != map.end()) {
        int age = iter.value();
    }
    
  5. トラバース操作:

    QMap<QString, int> map;
    map.insert("Alice", 26);
    map.insert("Bob", 32);
    QMap<QString, int>::const_iterator iter;
    for (iter = map.constBegin(); iter != map.constEnd(); ++iter) {
        QString name = iter.key();
        int age = iter.value();
        // 进行操作...
    }
    

QMap は、キーソート、範囲クエリ、複数マッピングなどの他の機能も提供します。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

5 Qハッシュ

QHash は、キーと値のペア (Key-Value) 要素を格納するための Qt のハッシュ コンテナ クラスです。効率的なキーベースの検索および挿入操作を提供し、ハッシュ関数を使用してキーをハッシュしてパフォーマンスを向上させます。

以下は、QHash の主な機能と一般的な操作の一部です。

  1. QHash オブジェクトを作成します。

    QHash<int, QString> hash;                          // 创建一个空的整型到字符串的散列
    QHash<QString, int> strHash = {
         
         {"Alice", 26}, {"Bob", 32}}; // 使用初始化列表创建散列
    QHash<QString, double> *doubleHash = new QHash<QString, double>(); // 创建动态分配的散列
    
  2. 要素を追加および削除します。

    QHash<QString, int> hash;
    hash.insert("Alice", 26);                          // 插入键值对
    hash.insert("Bob", 32);
    hash["Charlie"] = 40;                              // 使用下标操作符插入或修改值
    hash.remove("Bob");                                // 根据键删除元素
    hash.clear();                                      // 清空散列
    
  3. 要素を取得および変更します。

    QHash<QString, int> hash;
    hash.insert("Alice", 26);
    hash.insert("Bob", 32);
    int ageAlice = hash.value("Alice");                 // 获取键对应的值
    int ageBob = hash["Bob"];
    hash["Charlie"] = 40;                               // 修改键对应的值
    
  4. クエリ操作:

    QHash<QString, int> hash;
    hash.insert("Alice", 26);
    hash.insert("Bob", 32);
    bool containsBob = hash.contains("Bob");           // 检查是否包含指定键
    int count = hash.count();                          // 获取键值对的数量
    QHash<QString, int>::const_iterator iter = hash.find("Alice"); // 查找键对应的迭代器
    if (iter != hash.end()) {
        int age = iter.value();
    }
    
  5. トラバース操作:

    QHash<QString, int> hash;
    hash.insert("Alice", 26);
    hash.insert("Bob", 32);
    QHash<QString, int>::const_iterator iter;
    for (iter = hash.constBegin(); iter != hash.constEnd(); ++iter) {
        QString name = iter.key();
        int age = iter.value();
        // 进行操作...
    }
    

QHash は、キーソート、範囲クエリ、複数ハッシュなどの他の機能も提供します。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

6 Qセット

QSet は Qt のコレクション コンテナ クラスであり、一意の要素を格納するために使用されます。これにより、効率的な検索および挿入操作が提供され、要素の一意性が維持されます。

以下は、QSet の主な機能と一般的な操作の一部です。

  1. QSet オブジェクトを作成します。
QSet<int> set;                             // 创建一个空的整型集合
QSet<QString> strSet = {"Apple", "Orange"}; // 使用初始化列表创建集合
QSet<double> *doubleSet = new QSet<double>(); // 创建动态分配的集合

  1. 要素を追加および削除します。
QSet<int> set;
set.insert(10);                            // 插入元素
set.insert(20);
set.insert(30);
set.remove(20);                            // 删除指定元素

  1. クエリ操作:
QSet<int> set = {10, 20, 30};
bool contains = set.contains(20);          // 检查是否包含指定元素
int count = set.count();                    // 获取集合中元素的数量

  1. トラバース操作:
QSet<int> set = {10, 20, 30};
QSet<int>::const_iterator iter;
for (iter = set.constBegin(); iter != set.constEnd(); ++iter) {
    int value = *iter;
    // 进行操作...
}

  1. セット操作:
QSet<int> setA = {1, 2, 3, 4, 5};
QSet<int> setB = {4, 5, 6, 7, 8};
QSet<int> intersection = setA.intersect(setB);    // 交集
QSet<int> unionSet = setA.unite(setB);             // 并集
QSet<int> difference = setA.subtract(setB);        // 差集

QSet は、セットの並べ替え、セットの相互検証など、他の機能も提供します。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

7 Qペア

QPair は、異なる型の 2 つの値を保存するための Qt の汎用コンテナ クラスです。2 つの値を 1 つのユニットに結合して、転送と処理を容易にします。

QPair の主な機能と一般的な操作は次のとおりです。

  1. QPair オブジェクトを作成します。

    QPair<int, QString> pair;                          // 创建一个空的整型和字符串的配对
    QPair<QString, int> strIntPair = {"Alice", 26};     // 使用初始化列表创建配对
    QPair<QString, double> *strDoublePair = new QPair<QString, double>(); // 创建动态分配的配对
    
  2. 値を設定および取得します。

    QPair<QString, int> pair;
    pair.first = "Alice";                               // 设置第一个值
    pair.second = 26;                                   // 设置第二个值
    QString name = pair.first;                           // 获取第一个值
    int age = pair.second;                               // 获取第二个值
    
  3. 比較演算:

    QPair<int, int> pairA = {1, 2};
    QPair<int, int> pairB = {3, 4};
    bool equal = (pairA == pairB);                       // 比较两个配对是否相等
    bool notEqual = (pairA != pairB);                    // 比较两个配对是否不相等
    
  4. 交換操作:

    QPair<int, int> pair = {1, 2};
    pair.swap();                                         // 交换两个值
    

QPair は、異なるタイプの 2 つの値を保存し、直接アクセスおよび操作を実行する便利な方法を提供します。QMap、QHash などの多くの Qt クラスで広く使用されています。より詳細な関数リストと使用例については、Qt ドキュメントを参照してください。

おすすめ

転載: blog.csdn.net/HiWangWenBing/article/details/131750402