@[TOC](QVector與std::vector對比)
Qt與STL都提供了諸如QVector之類的容器,在軟件開發的過程中,應該使用哪一種容器更爲合理呢?筆者認爲這取決於你希望如何優化你的軟體;當你更在意的是效率時,筆者建議你使用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;
vec.push_back(a);
system("pause");
return 0;
}
結果
QVector具有隱式共用而vector不具備,QVector中不論時使用at()還是operator都會檢查越界問題,而vector中operator[]不檢查越界,at( )才檢查越界。
關於vector的更多資料,你可以存取C/C++參考網站;
關於QVector的更多資料,你可以存取Qt官網
如果以上描述仍不足以解答你的疑惑,請聯繫我的郵箱[email protected]。