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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_200417075318%E5%8A%A0%E6%88%91QQ.jpg)
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_200417080925%E5%8A%A0%E6%88%91%E5%BE%AE%E4%BF%A1.jpg)