实例:



#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;
}