數據結構的區別
vector
vector與數組類似,擁有一段連續的內存空間,並且起始地址不變。便於隨機訪問,時間復雜度為O(1),但因為內存空間是連續的,所以在進入插入和刪除操作時,會造成內存塊的拷貝,時間復雜度為O(n)。
此外,當數組內存空間不足,會采取擴容,通過重新申請一塊更大的內存空間進行內存拷貝。
List
list底層是由雙向鏈表實現的,因此內存空間不是連續的。根據鏈表的實現原理,List查詢效率較低,時間復雜度為O(n),但插入和刪除效率較高。只需要在插入的地方更改指針的指向即可,不用移動數據。
迭代器支持不同
異:vector中,iterator支持 ”+“、”+=“,”<"等操作。而list中則不支持。
同:vector<int>::iterator和list<int>::iterator都重載了 “++ ”操作。