• Qt在Qt中std::vector使用简介


    相关资料:

    https://blog.csdn.net/tpriwwq/article/details/80609371

    实例:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QDebug>
    
    #include <vector>// 使用vector,需添加头文件
    #include <algorithm>// 要使用sort或find
    
    using namespace std;
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    

      

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        // 定义
        std::vector<int> nNullVec;// 空对象
        std::vector<int> nVec1(5, -1);// 包含10个元素,且值为-1
        std::vector<std::string> strVec{"a", "b", "c"};// 列表初始化
        for(size_t i = 0; i < nNullVec.size(); ++i)
             qDebug() << "nNullVec:" << nNullVec[i];// 什么也不输出
        for(size_t i = 0; i < nVec1.size(); ++i)
             qDebug() << "nVec1:" << nVec1[i];// -1-1-1-1-1
        for(size_t i = 0; i < strVec.size(); ++i)
             qDebug() << "strVec:" << QString::fromStdString(strVec[i]);// 输出"a""b""c"
        // 压入元素
        nVec1.push_back(5);
        nVec1.push_back(6);
        for(size_t i = 0; i < nVec1.size(); ++i)
             qDebug() << "nVec1:" << nVec1[i];// 输出-1-1-1-1-1 5 6
        // 判空处理
        qDebug() << "nNullVec:" << nNullVec.empty();// 输出true
        qDebug() << "empty:" << nVec1.empty();// 输出false
        // 迭代器 iterator 和 const_iterator。区别后者类似于常量指针,只能读取不能修改。vector对象不是常量,两者均可使用
        std::vector<int>::iterator itr = nVec1.begin();
          for(; itr != nVec1.end(); ++itr)
            qDebug() << "nVec1:" << (*itr);// 输出-1-1-1-1-1 5 6
        // 插入元素(TNND,插入还需要迭代器!)
        qDebug() << "insert========================";
    //    c.insert(pos,num);    // 在pos位置插入元素num
    //    c.insert(pos,n,num);   // 在pos位置插入n个元素num
    //    c.insert(pos,beg,end);  // 在pos位置插入区间为[beg,end)的元素
        std::vector<int>::iterator insertItr = nVec1.begin();
        int index = 0;
        while(insertItr != nVec1.end())
        {
            if(2 == index)
            {
                insertItr = nVec1.insert(insertItr , 8); //此时insert的返回值是迭代器,插入成功后iVector指向插入的位置
            }
            index++;
            ++insertItr;
        }
        for(size_t i = 0; i < nVec1.size(); ++i)
             qDebug() << "nVec1:" << nVec1[i];// 输出-1-1 8-1-1-1 5 6
        // 删除元素(注意,删除元素,会导致迭代器无效)
        qDebug() << "delete========================";
    //    c.erase(p);// 删除迭代器p所指定的元素,返回一个指向被删除元素之后的迭代器。
    //    c.erase(begin,end);// 删除b,e所指定范围内的元素,返回一个指向被删除元素之后的迭代器。
    //    c.clear();// 删除所有元素
        std::vector<int>::iterator deleteIter = nVec1.begin();
        for(; deleteIter != nVec1.end();)
        {
            if(*deleteIter == -1)
                deleteIter = nVec1.erase(deleteIter);
            else
                deleteIter++;
        }
        for(size_t i = 0; i < nVec1.size(); ++i)
             qDebug() << "nVec1:" << nVec1[i];// 输出 8 5 6
        // 清空元素
        qDebug() << "clear========================";
        nVec1.clear();
        for(size_t i = 0; i < nVec1.size(); ++i)
             qDebug() << "nVec1:" << nVec1[i];// 什么也不输出
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    

      

    作者:疯狂Delphi
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

    欢迎关注我,一起进步!扫描下方二维码即可加我

  • 相关阅读:
    BOM
    no response from Graphic Screen Painter Exiting
    Windows Mobile 中模拟按键
    C# 获取汉字拼音首字母
    Web Service介绍
    .net/c#中栈和堆的区别及代码在栈和堆中的执行流程详解
    使用JSON加速AJAX(By Sean Kelly)
    Sql字符串操作函数
    一个简单AJAX注册示例
    .Net平台开发的技术规范与实践精华总结
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/15556424.html
Copyright © 2020-2023  润新知