1. 程式人生 > >vector和list的區別

vector和list的區別

對於vector和list而言,

  1. vector和陣列類似,擁有一段連續的記憶體空間,並且起始地址不變。vector和陣列類似,擁有一段連續的記憶體空間,並且起始地址不變。 因此,它能夠高效地進行隨機存取,時間複雜度是O(1)。 但是,因為其記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,因此時間複雜度為O(n)。 另外,當陣列記憶體空間不夠時,會重新申請一塊內動空間並進行記憶體拷貝。
  2. list是由雙向連結串列實現的,因此記憶體空間是不連續的。 其只能通過指標訪問資料,所以list的隨機存取效率很低,時間複雜度為O(n)。 不過由於連結串列自身的特點,能夠進行高效的插入和刪除
  3. vector和list對於迭代器的支援不同。 相同點在於,vector< int >::iterator和list< int >::iterator都過載了 “++ ”操作。 而不同點在於,在vector中,iterator支援 ”+“、”+=“,”<"等操作。而list中則不支援。