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 <QVector>
#include <iostream>
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
今天的文章qvector的用法_groupby的用法及原理详解分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/76485.html