qvector的用法_groupby的用法及原理详解

qvector的用法_groupby的用法及原理详解QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们

qvector的用法_groupby的用法及原理详解"

       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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注