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