相關資料:
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; }