QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。使用前需要包含头文件 #include
下面介绍QVector的基本用法,先看看它的一些方法:
构造函数
QVector() //无参的构造函数 QVector(int size) //构造一个大小为size个 值为默认值的一个vector QVector(int size,const T &value) //构造一个大小为size个 值为T &value的一个vector QVector(const QVector
&other) //构造一个值为QVector
&other的vector
例如:vector
intVec;
从尾部插入数据
void append(const T &value) void append(const QVector
&value) void push_back(const T &value) void push_back(const QVector
&value)
头部插入数据
void prepend(const T &value) void prepend(const QVector
&value) void push_front(const T &value) void push_front(const QVector
&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
#include
#include
using namespace std; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QVector
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
::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(); }
运行结果:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219451.html原文链接:https://javaforall.net
