QVector

目录

1、构造

2、增加

3、删除

4、改

5、查找

6、取值

7、转换

8、其他

9、测试代码


1、构造

QVector vector;
for(int i = 0; i < 10; ++i) vector << i + 1;

//构造
QVector myVector1(5);      //开辟5个大小的空间
QVector myVector2(5,1);    //5个值,都是1
QVector myVector3(vector); //用另一个QVector初始化

2、增加

QVector myVector;
myVector.push_back(5);  //在数组后添加元素
myVector.push_front(4); //在数组首位置添加元素
myVector.prepend(3);    //在数组首位置添加元素
myVector.append(6);     //在数组最后添加元素
myVector << 7;          //在数组最后添加元素
myVector.insert(0,2);   //在数组位置0,添加元素
myVector.insert(0,2,1); //在数组位置0,添加2个值为1的元素
myVector.insert(myVector.end(),8);      //在数组最后,添加元素
myVector.insert(myVector.end(),2,9);    //在数组最后,添加2个值为9的元素
qDebug() << myVector;

3、删除

//删除
myVector.clear();
myVector << vector;
myVector.remove(0,2);   //从位置0开始,移除2个元素
myVector.remove(0);     //移除位置0的元素
qDebug() << myVector;
myVector.pop_back();    //移除最后一个元素
myVector.pop_front();   //移除第一个元素
myVector.clear();
myVector << vector;
myVector.erase(myVector.begin());//移除某位置的元素
myVector.erase(myVector.begin(),myVector.end());//移除区间所有元素
qDebug() << myVector;

4、改

//改
myVector.clear();
myVector << vector;
myVector.replace(0,10);//位置0上的元素,用10来代替
qDebug() << myVector;

5、查找

qDebug() << myVector.indexOf(2,0);//从位置0开始,查找元素2,返回下标
qDebug() << myVector.lastIndexOf(2,1);//从右向左数,位置0开始查找元素2,返回下标
qDebug() << myVector.startsWith(2);//判断,第一个元素是否是2
qDebug() << myVector.endsWith(2);//判断,最后一个元素是否是2

6、取值

qDebug() << myVector.front(); //第一个元素
qDebug() << myVector.first(); //第一个元素
qDebug() << myVector.last(); //最后一个元素
qDebug() << myVector.mid(1,3); //取位置1后,3个元素

7、转换

//将QVector转为stdVector
std::vector stdVector = myVector.toStdVector();

//将QVector转为QList
QList list = myVector.toList();
qDebug() << list;

//将stdVector转为QVector
myVector.clear();
myVector = QVector::fromStdVector(stdVector);
qDebug() << myVector;

//将QList转为QVector
myVector.clear();
myVector = QVector::fromList(list);
qDebug() << myVector;

8、其他

myVector.squeeze(); //释放不需要存储项的内存
qDebug() << myVector.data(); //首地址
qDebug() << myVector.capacity(); //内存大小
myVector.clear(); //清空内存

9、测试代码

#include 
#include 
#include 
#include 

using namespace std;

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

    QVector vector;
    for(int i = 0; i < 10; ++i) vector << i + 1;

    //构造
    QVector myVector1(5);      //开辟5个大小的空间
    QVector myVector2(5,1);    //5个值,都是1
    QVector myVector3(vector); //用另一个QVector初始化

    //增加
    QVector myVector;
    myVector.push_back(5);  //在数组后添加元素
    myVector.push_front(4); //在数组首位置添加元素
    myVector.prepend(3);    //在数组首位置添加元素
    myVector.append(6);     //在数组最后添加元素
    myVector << 7;          //在数组最后添加元素
    myVector.insert(0,2);   //在数组位置0,添加元素
    myVector.insert(0,2,1); //在数组位置0,添加2个值为1的元素
    myVector.insert(myVector.end(),8);      //在数组最后,添加元素
    myVector.insert(myVector.end(),2,9);    //在数组最后,添加2个值为9的元素
    qDebug() << myVector;

    //删除
    myVector.clear();
    myVector << vector;
    myVector.remove(0,2);   //从位置0开始,移除2个元素
    myVector.remove(0);     //移除位置0的元素
    qDebug() << myVector;
    myVector.pop_back();    //移除最后一个元素
    myVector.pop_front();   //移除第一个元素
    myVector.clear();
    myVector << vector;
    myVector.erase(myVector.begin());//移除某位置的元素
    myVector.erase(myVector.begin(),myVector.end());//移除区间所有元素
    qDebug() << myVector;

    //改
    myVector.clear();
    myVector << vector;
    myVector.replace(0,10);//位置0上的元素,用10来代替
    qDebug() << myVector;

    //查找
    qDebug() << myVector.indexOf(2,0);//从位置0开始,查找元素2,返回下标
    qDebug() << myVector.lastIndexOf(2,1);//从右向左数,位置0开始查找元素2,返回下标
    qDebug() << myVector.startsWith(2);//判断,第一个元素是否是2
    qDebug() << myVector.endsWith(2);//判断,最后一个元素是否是2

    //取值
    qDebug() << myVector.front(); //第一个元素
    qDebug() << myVector.first(); //第一个元素
    qDebug() << myVector.last(); //最后一个元素
    qDebug() << myVector.mid(1,3); //取位置1后,3个元素

    //转换
    //将QVector转为stdVector
    std::vector stdVector = myVector.toStdVector();

    //将QVector转为QList
    QList list = myVector.toList();
    qDebug() << list;

    //将stdVector转为QVector
    myVector.clear();
    myVector = QVector::fromStdVector(stdVector);
    qDebug() << myVector;

    //将QList转为QVector
    myVector.clear();
    myVector = QVector::fromList(list);
    qDebug() << myVector;

    myVector.squeeze(); //释放不需要存储项的内存
    qDebug() << myVector.data(); //首地址
    qDebug() << myVector.capacity(); //内存大小
    myVector.clear(); //清空内存
    return a.exec();
}

 

你可能感兴趣的:(QT)