當前位置:編程學習大全網 - 網站源碼 - C++ STLvector 中為什麽沒有push_front?

C++ STLvector 中為什麽沒有push_front?

首先,妳得要先明白,vector是開辟壹塊空間來作為數組來存放元素(隨機叠代器),如果有了pop_front,pop_back這個功能則很容易造成內存碎片,pop_front會造成頭部內存產生碎片,pop_back朝臣尾部內存產生碎片,所以不能像deque(雙向叠代器)那樣有pop_front, pop_back這樣的完全相同的實現.其次才是性能上的問題,vector實現pop_front的功能可以這樣:

vector<int> vi;

vi.push_back(1);

vi.push_back(2);

vi.push_back(3);

vi.erase(vi.begin());//等同於push_front

但是,這樣實現的實質是,重新開辟內存放置元素後釋放原先的內存,這樣做的原因是放置內存碎片,在程序中,如果產生內存碎片則意味著這是內存泄露,是十分危險的壹件事情,所以不能在stl中出現

  • 上一篇:鯊魚記賬無法登陸怎麽辦?
  • 下一篇:FOXQUEEN銀狐320P4電源如何?
  • copyright 2024編程學習大全網