C++中 list与vector的区别
引用http://www.cnblogs.com/shijingjing07/p/5587719.html
?
C++ vector和list的區(qū)別
1.vector數(shù)據(jù)結(jié)構(gòu)
vector和數(shù)組類似,擁有一段連續(xù)的內(nèi)存空間,并且起始地址不變。
因此能高效的進行隨機存取,時間復(fù)雜度為o(1);
但因為內(nèi)存空間是連續(xù)的,所以在進行插入和刪除操作時,會造成內(nèi)存塊的拷貝,時間復(fù)雜度為o(n)。
另外,當(dāng)數(shù)組中內(nèi)存空間不夠時,會重新申請一塊內(nèi)存空間并進行內(nèi)存拷貝。
2.list數(shù)據(jù)結(jié)構(gòu)
list是由雙向鏈表實現(xiàn)的,因此內(nèi)存空間是不連續(xù)的。
只能通過指針訪問數(shù)據(jù),所以list的隨機存取非常沒有效率,時間復(fù)雜度為o(n);
但由于鏈表的特點,能高效地進行插入和刪除。
3.vector和list的區(qū)別
我們看一個簡單的vector和list使用示例:
vector擁有一段連續(xù)的內(nèi)存空間,能很好的支持隨機存取,
因此vector<int>::iterator支持“+”,“+=”,“<”等操作符。
list的內(nèi)存空間可以是不連續(xù),它不支持隨機訪問,
因此list<int>::iterator則不支持“+”、“+=”、“<”等
vector<int>::iterator和list<int>::iterator都重載了“++”運算符。
總之,如果需要高效的隨機存取,而不在乎插入和刪除的效率,使用vector;
如果需要大量的插入和刪除,而不關(guān)心隨機存取,則應(yīng)使用list。
轉(zhuǎn)載于:https://www.cnblogs.com/wj0816/p/6568630.html
總結(jié)
以上是生活随笔為你收集整理的C++中 list与vector的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络(CNN)与特殊的卷积
- 下一篇: 【C++第一个Demo】---控制台RP