QVector

目錄

1、構造

2、增加

3、刪除

4、改

5、查找

6、取值

7、轉換

8、其他

9、測試代碼


1、構造

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

//構造
QVector<int> myVector1(5);      //開闢5個大小的空間
QVector<int> myVector2(5,1);    //5個值,都是1
QVector<int> myVector3(vector); //用另一個QVector初始化

2、增加

QVector<int> 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<int> stdVector = myVector.toStdVector();

//將QVector轉爲QList
QList<int> list = myVector.toList();
qDebug() << list;

//將stdVector轉爲QVector
myVector.clear();
myVector = QVector<int>::fromStdVector(stdVector);
qDebug() << myVector;

//將QList轉爲QVector
myVector.clear();
myVector = QVector<int>::fromList(list);
qDebug() << myVector;

8、其他

myVector.squeeze(); //釋放不需要存儲項的內存
qDebug() << myVector.data(); //首地址
qDebug() << myVector.capacity(); //內存大小
myVector.clear(); //清空內存

9、測試代碼

#include <QCoreApplication>
#include <QDebug>
#include <list>
#include <QVector>

using namespace std;

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

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

    //構造
    QVector<int> myVector1(5);      //開闢5個大小的空間
    QVector<int> myVector2(5,1);    //5個值,都是1
    QVector<int> myVector3(vector); //用另一個QVector初始化

    //增加
    QVector<int> 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<int> stdVector = myVector.toStdVector();

    //將QVector轉爲QList
    QList<int> list = myVector.toList();
    qDebug() << list;

    //將stdVector轉爲QVector
    myVector.clear();
    myVector = QVector<int>::fromStdVector(stdVector);
    qDebug() << myVector;

    //將QList轉爲QVector
    myVector.clear();
    myVector = QVector<int>::fromList(list);
    qDebug() << myVector;

    myVector.squeeze(); //釋放不需要存儲項的內存
    qDebug() << myVector.data(); //首地址
    qDebug() << myVector.capacity(); //內存大小
    myVector.clear(); //清空內存
    return a.exec();
}

 

發佈了42 篇原創文章 · 獲贊 52 · 訪問量 6595
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章