前言
在使用Qt开发Windows软件的情况下,软件开发者可以选择Qt提供的容器以及STL中的容器,这里我们以QVector与vector为例,告诉读者两种容器的区别,以及使用哪一种容器更为合理。笔者认为这取决于你希望如何优化你的软件;当你更在意的是效率时,笔者建议你使用vector;但当你更在意的是安全时,笔者建议你使用QVector。当今的计算机已经足够强大,在使用容器时,笔者建议你使用QVector。
实验
vector和QVector都是通过复制构造函数添加对象,但当你执行push_back时,你会发现,vector只调用了一次复制构造函数,而QVector调用了两次复制构造函数。
代码
#include <iostream>
#include <QtCore/QVector>
using namespace std;
class A
{
public:
A()
{
cout << "A()" << endl;
}
A(const A& a) // 增加拷贝构造函数
{
cout << "copy A()" << endl;
}
~A()
{
cout << "~A()" << endl;
}
public:
int v;
};
int main()
{
A a;
vector<A> vec;
cout << "vector test" << endl;
vec.push_back(a);
QVector<A> qvec;
cout << "qvector test" << endl;
qvec.push_back(a);
system("pause");
return 0;
}
使用vector时,只进行了一次复制构造和而使用QVector时进行了两次复制构造。
不同点对比
QVector具有隐式共享而vector不具备,QVector中不论时使用at()还是operator都会检查越界问题,而vector中operator[]不检查越界,at( )才检查越界。
补充说明
关于vector的更多资料,你可以访问C/C++参考网站;
关于QVector的更多资料,你可以访问Qt官网
如果以上描述仍不足以解答你的疑惑,请联系我的邮箱707101557@qq.com。