QVector相关

QVector 优缺点

优点:下标访问方便
缺点:在前部或者中间插入时,速度是很慢的,因为插入操作会导致后面数被移动。

QVector的常用接口

QVector 是 Qt 框架中一个用于存储数据的容器类,它可以存储各种类型的数据,如整数、浮点数、自定义类等。QVector 类提供了多种用于操作数据的接口方法。以下是一些常用接口的详细介绍:

构造函数:

QVector():创建一个空的 QVector 容器。
QVector(int size):创建一个指定大小的 QVector 容器。
QVector(int size, const T &value):创建一个指定大小的 QVector 容器,并用给定值填充。
QVector(const QVector &other):复制构造函数,用另一个 QVector 容器创建一个新的 QVector 容器。

元素访问:

T &operator[](int i):通过索引访问元素,返回指定索引处的元素的引用。
const T &operator[](int i) const:以只读方式通过索引访问元素。
T &at(int i):通过索引访问元素,会检查索引是否越界。
T &front():返回容器中的第一个元素的引用。
const T &front() const:以只读方式返回容器中的第一个元素。
T &back():返回容器中的最后一个元素的引用。
const T &back() const:以只读方式返回容器中的最后一个元素。

容量和大小:

bool isEmpty() const:判断容器是否为空。
int size() const:获取容器中元素的数量。
int capacity() const:获取容器的容量。
void reserve(int size):预分配指定数量的元素空间,提高性能。
void squeeze():释放未使用的容量,将容量调整为实际元素数量。

修改容器:

void clear():清空容器中的所有元素。
void resize(int size):调整容器的大小。
void fill(const T &value, int size = -1):用给定值填充容器,可以指定填充个数。
void append(const T &value):在容器末尾添加一个元素。
void prepend(const T &value):在容器开头添加一个元素。
void insert(int i, const T &value):在指定位置插入一个元素。
void replace(int i, const T &value):替换指定位置的元素。
void remove(int i):移除指定位置的元素。
void remove(int i, int count):从指定位置开始移除指定数量的元素。
void removeAll(const T &value):移除容器中所有等于给定值的元素。
bool removeOne(const T &value):移除容器中第一个等于给定值的元素。

查找:

int indexOf(const T &value, int from = 0) const:从指定位置开始查找给定值的元素,返回第一个找到的元素的索引。
int lastIndexOf(const T &value, int from = -1) const:从指定位置开始向前查找给定值的元素,返回第一个找到的元素的索引。
bool contains(const T &value) const:判断容器中是否包含给定值的元素。
int count(const T &value) const:计算容器中给定值的元素的个数。

迭代器:

iterator begin():返回容器的起始迭代器。
const_iterator begin() const:返回容器的只读起始迭代器。
iterator end():返回容器的结束迭代器。
const_iterator end() const:返回容器的只读结束迭代器。

比较操作符:

bool operator==(const QVector &other) const:判断两个 QVector 容器是否相等,元素数量和值都相等时为 true。
bool operator!=(const QVector &other) const:判断两个 QVector 容器是否不相等。

其他功能:

QVector &operator=(const QVector &other):赋值操作符,将一个 QVector 容器赋值给另一个。
QVector mid(int pos, int length = -1) const:获取容器中指定范围的元素,返回一个新的 QVector 容器。
void swap(QVector &other):交换两个 QVector 容器的内容。
#include 
//包含头文件
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //构造
    QVector<QString> strA(10, "构造");//初始化
    qDebug()<<strA;
    //清空
    strA.clear();    
    //判空
    if(strA.isEmpty()){
        qDebug()<<"vector is empty";
    }
    qDebug()<<strA;

    QVector<QString> strArray;
    //插入数据
    strArray<<"第一个数据";
    strArray.push_back("后插入的数据");
    strArray.push_front("前插入的数据");
    strArray.insert(2, "插入的数据");
    //遍历 方法一
    qDebug()<<"遍历方法一";
    for(int i = 0; i < strArray.size(); ++i){
        qDebug()<<strArray[i];
    }
    //遍历 方法二
    qDebug()<<"遍历方法二";
    for(auto &data : strArray){
        qDebug()<<data;
    }
    //遍历 方法三
    qDebug()<<"遍历方法三";
    for(QVector<QString>::Iterator it = strArray.begin(); it !=strArray.end(); it++){
        qDebug()<<*it;
    }

    //替换数据
    strArray.replace(2, "替换的数据");
    qDebug()<<strArray;

    strArray.push_back("后插入的数据1");
    strArray.push_back("后插入的数据2");
    strArray.push_back("后插入的数据3");
    qDebug()<<strArray;

    //查找元素
    int index = strArray.indexOf("替换的数据");
    if(index != -1){
        qDebug()<<"查找到ID:"<< index <<"  查找到到内容是:"<<strArray[index];
    }

    //排序
    qDebug()<<"排序";
    std::sort(strArray.begin(), strArray.end());
    qDebug()<<strArray;

    //删除数据
    strArray.remove(4); //移除第4个数据
    qDebug()<<strArray;

    strArray.remove(2, 2);//从位置2开始,移除2个数据
    qDebug()<<strArray;

    strArray.pop_back(); //从最后移除数据
    strArray.pop_front(); //从前面移除数据
    qDebug()<<strArray;

    return a.exec();
}

你可能感兴趣的:(Qt基础,Qt)