QVector用法详细介绍

2023-10-26

QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。
使用前需要包含头文件 #include <QVector>
下面介绍QVector的基本用法,先看看它的一些方法:
构造函数

QVector()  //无参的构造函数
QVector(int size)  //构造一个大小为size个 值为默认值的一个vector
QVector(int size,const T &value)  //构造一个大小为size个 值为T &value的一个vector
QVector(const QVector<T> &other)   //构造一个值为QVector<T> &other的vector
   例如:`vector<int> intVec;`

从尾部插入数据

void append(const T &value)  
 void append(const QVector<T> &value)
 void push_back(const T &value)
 void push_back(const QVector<T> &value)

头部插入数据

void prepend(const T &value)  
void prepend(const QVector<T> &value)
void push_front(const T &value)
void push_front(const QVector<T> &value)
等同于vector.insert(0, value);

将元素插入到vector的任意位置

void insert(int i, const T &value) //将元素插入到i位置,i从0开始计算
void insert(int i, int count, const T &value) //从i位置开始插入count个T &value类型元素

删除元素

QVector::iterator erase(QVector::iterator pos) 从vector中移除pos对应的元素
void remove(int i, int count)  从vector中移除从 i开始的count个元素  
void pop_back()  删除vector中最后一个元素
void pop_front()  删除vector中第一个元素

注意erase方法和std::vector有区别
移除vector中的所有元素

void clear()

容量大小

int capacity() const    返回vector客观上的容量
void reserve(int size)  扩展至少size大小的内存
int count() const    返回vector中的元素个数
int length() const    等同于count()
int size() const     等同于count()

迭代器

QVector::iterator begin() //返回一个STL类型的迭代器指针指向vector的第一个元素
QVector::iterator end()  //返回一个STL类型的迭代器指针指向vector的最后一个元素后

面的假想元素
其它

bool empty() const  //判断vector是否为空,如果为空返回true,else返回false
int count(const T &value) const  //返回T &value类型元素在vector中的个数
int indexOf(const T &value, int from=...) const  //返回 value在vector中T &value类型元素的位置
const T &at(int i)const  //返回 i位置元素 在vector的index
等同于 T QVector::value(int i) const
void replace(int i, const T &value)   //改变i位置元素的值
QVector::reference QVector::back() 返回vector中的最后一个元素的引用 等同于T &QVector::last()
T &QVector::front()  返回vector中的第一个元素的引用 等同于T & first()

下面的代码是上述一些函数的使用方法:

#include <QtCore/QCoreApplication>
#include
#include

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QVector<int> vec;
vec.push_back(9);
vec.append(3);
vec.push_back(7);
vec.push_front(5);
vec.push_front(2);
vec.append(6);
vec.insert(0, 11);
vec.insert(0, 12);
vec.insert(4, -1);

//12 11 2 5 9 3 7 6
for (int elem : vec)
{
	cout << elem << " , ";
}

cout << endl;

//删除元素
cout << "QVector删除数据操作" << endl;
vec.pop_back();
vec.pop_front();
vec.remove(2, 1);  //删除当前vec的第2个数据
for (int elem : vec)
{
	cout << elem << " , ";
}

cout << endl;

//当前vec的元素:11 2 -1 9 3 7
cout << "迭代器用法" << endl;

//QVector<int>::iterator it;
//for (it = vec.begin(); it != vec.end(); it++)
for(auto it= vec.begin(); it != vec.end(); it++)
{
	if (*it == -1)
	{
		vec.erase(it);  //删除掉-1
	}

	cout << *it << " ,";
}

cout << endl;

vec.clear();
cout << "清空后vec大小 = " << vec.size() << endl;

return a.exec();

}

运行结果:

      12 , 11 , 2 , 5 , -1 , 9 , 3 , 7 , 6 ,
      QVector删除数据操作
      11 , 2 , -1 , 9 , 3 , 7 ,
      迭代器用法
      11 ,2 ,9 ,3 ,7 ,
      清空后vec大小 = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QVector用法详细介绍 的相关文章

随机推荐

  • char* 和jstring转换

    在平时的工作 经常用到jni和const类型转换 调用例子 JNIEXPORT jstring JNICALL Java com powervision videolib jni JniNatives native 1getPpsLengt
  • 数字信号处理——DFT的一些理解

    DFT 离散傅里叶变换 的基本概念 1 对信号作DFT的过程 1 对模拟信号以一定的采样率进行采样 得到离散信号 2 将离散信号转换为离散 无穷 序列 即用序列号n代替原时间变量 3 对离散 无穷 序列进行截断 只取一部分构成离散序列 有限
  • 拆分单链表

    Copyright c 2016 烟台大学计算机与控制工程学院 All rights reserved 文件名 text html 作者 常轩 微信公众号 Worldhello 完成日期 2016年11月16日 版本号 V1 0 程序输入
  • vue项目接入unity3D模块并进行数据通信

    一 添加unity工程 unity工程师会提供一个前端可使用的包 将其放在vue项目的public下 我这里以unity文件夹命名 二 在项目中创建iframe标签并引入index html文件 三 修改public gt unity gt
  • YOLO V1 学习摘要

    YOLO V1是一种基于深度学习的目标检测算法 其原理和流程如下 1 利用卷积神经网络 CNN 提取输入图像的特征 2 将图像分割成S x S个网格 grid 每个网格负责检测其中一个特定尺寸和位置的目标 3 对于每个网格 预测一个包含5
  • Pycharm无法导入anaconda的包

    Pycharm无法导入anaconda的包 第一 检查是否设置了anaconda的环境变量 第二步 查看anaconda下面的envs是否为空包 如果是空包 便要创建虚拟环境详细过程可参照 2023最新 Python Pycharm Ana
  • 堆—特殊二叉树

    我们了解了树形结构之后 知道了二叉树 但是二叉树的具体用途我们还是不知道 今天就来看看一种特殊的二叉树 堆 它是一种完全二叉树 著名的topK问题就是用堆来求取的 可以求出一组数中的最大或者最小的元素 所使用的堆就是大根堆 小根堆 所谓大根
  • VMware安装Android-x86_64-9.0-r2系统兼容arm设置

    Android x86 64 9 0 r2虚拟机安装兼容arm的android应用程序 1 安装后WLAN提示已连接无网络 实际网络联通 终端模拟器依次输入以下命令后回车重启系统 su settings put global captive
  • Xray-基础详细使用

    一 Xray介绍 Xray 是一款功能强大的安全评估工具 由多名经验丰富的一线安全从业者呕心打造而成 可支持与AWVS BP等众多安全工具联合使用 二 Xray简易架构 说明 了解 Xray 的整体架构可以更好的理解客户端和配置文件的设置
  • for循环详解

    For循环详解 举例如图下 首先for循环相比其他循环可以把条件写在一起如图所示 这变量 条件 变化必不可少其他循环也是 但是for循环有一个点它在初始变量的时候 进入循环之前就已经执行了一次 条件是每次进入循环之前都会执行并且判断 还有当
  • 【git】git rebase -i 合并多次提交

    1 概述 git rebase i 命令用于交互式地重新应用提交历史 其中 i 选项表示以交互方式进行操作 通过使用这个命令 您可以合并 删除 编辑 重排等操作提交历史 从而修改提交的顺序或合并多次提交 下面是使用 git rebase i
  • Linux简介

    1 1操作系统是什么 操作系统概述 要讲明白 Linux 是什么 首先得说说什么是操作系统 计算机系统是指按用户的要求 接收和存储信息 自动进行数据处理并输出结果信息的系统 它由硬件子系统 计算机系统赖以工作的实体 包括显示屏 键盘 鼠标
  • Xcode9 xcodebuild 命令行打包遇到的坑与解决方案

    主要涉及的打包脚本命令 if xcodeversion lt 830 then Xcode 8 3 以下打包时使用该脚本 xcodebuild exportArchive exportFormat ipa archivePath schem
  • 十一、文件的读写

    一 文件的读写模式 1 文件常用的打开模式 r 只能读 r 可读可写 不会创建不存在的文件 如果直接写文件 则从顶部开始写 覆盖之前此位置的内容 如果先读后写 则会在文件最后追加内容 w 可读可写如果文件存在则覆盖整个文件 不存在则创建 w
  • 数学建模 —— 降维算法

    文章目录 前言 数据降维的作用 一 主成分分析 PCA 1 介绍 2 算法流程 3 主成分分析的说明 二 因子分析 FA 1 介绍 2 算法流程 3 因子分析和主成分分析的对比 三 典型相关性分析 CCA 1 介绍 2 算法思路 3 算法流
  • 用位运算实现两个整数的加减乘除运算

    位运算的思想可以应用到很多地方 这里简单的总结一下用位运算来实现整数的四则运算 1 整数加法 int Add int a int b for int i 1 i i lt lt 1 if b i for int j i j j lt lt
  • 网络七层及四层协议通俗详解

    1 OSI开放式网络七层协议模型 总体而言 理解记忆 我点击一个网络请求 假如使用http协议 这就是应用层 用户选择具体的协议 这个请求需要传输数据 但是不同系统因为编码等方式不同 无法识别彼此发送的消息 这个时候表示层就需要把数据整理成
  • 《剑指offer》读后感

    帮研二的学姐准备网易暑期实习的机试时 代码提交在一个OJ网站叫牛客网 出于好奇就多点了一下这个网站 看到 剑指offer 的在线编程专栏 就是把剑指offer中的题目都挂在了网上 可以在线判断是否AC 以前也总是听到学长们推荐该书 索性趁着
  • R语言实现样本量的估算(2)

    本文默认 0 05 sig level 0 2 power 根据研究需要可调整 导入包 library pwr 1 已知标准差和预期差异 1 单样本t检验 某治疗措施预期提高某物质水平8mg L 标准差为10mg L 单样本t检验 pwr
  • QVector用法详细介绍

    QVector类是动态数组的模板类 顺序容器 它将自己的每一个对象存储在连续的内存中 可以使用索引号来快速访问它们 使用前需要包含头文件 include