程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ list size()所想到的事情,listsize

C++ list size()所想到的事情,listsize

編輯:C++入門知識

C++ list size()所想到的事情,listsize


  effective STL 某個Item裡重點提出了 list.size()是一個O(n)的效率  當時只是記下來了  後面看了csdn有人在實際工程上遇到坑了  我近來閒來無事 把STL的list相關部分好好看下:

看看STL大牛們設置成O(n)的原因:

1) size() 調用algorithm裡的distance() 得出長度  而empty()就是判斷頭和尾是否相等 O(1) 大部分情況下 咱們都是判斷這個list是否為空

2) 設計原因: list引入了一個重要的splice操作,在常量級別也就是o(1)完成list的tranfer 這個操作對merge reverse sort有很大的幫助  如果:

size()不這樣做 那麼tranfer就不能是o(1)完成 不是o(1) 那麼就在Merge 和sort就不能高效完成  而且事實上 merge 和sort操作顯的更為重要些,所以size()在每次調用時調用distance 而不是更好的O(1) 這樣就可以均攤tranfer的常量級操作  看到網上人吐槽這個地方  我想懂了上述設計原理  也不會吐槽這個結構了。


C語言中 “#define list_init_size 80” 是什?

一個宏定義,宏的名稱是list_init_size,它的值是80
相當於一個常量.後面程序中只要用到list_init_size,那麼它的值都是80
 

list=null與listsize()=0有什不同?

當然有區別。舉個不算恰當的例子,我有一個空著的水杯(list),而你沒有,那你是null,我的size為0。你想裝水需要去買個水杯(new ArrayList();),我就可以直接裝水(list.add(水))。你要是直接裝,水就流出去啦(空指針異常)。所以用做判斷的時候經常連用 list!=null && list.size()!=0 。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved