先熟悉set的find原理
這個類改造下,還是非常實用的,可以對於不同的型別做資料儲存
// use of this source code is governed by a bsd-style license that can be
// found in the license file.
#ifndef
ui_base_view_prop_h_
#define
ui_base_view_prop_h_
namespace
ui ;
} // namespace ui
#endif
// ui_base_view_prop_h_
viewprop::viewprop(gfx::
acceleratedwidget
view
, const char
* key
, void
* data
) viewprop
::~viewprop()
// static
void
* viewprop
::getvalue(gfx::
acceleratedwidget
view
, const char
* key
) // static
const char
* viewprop
::key()
const
test構建乙個viewprop(viewproptest, basic)
然後使用viewprop::getvalue靜態方法查詢
viewprop建構函式用
data
::get建立data,查詢的時候還是用data
::get方法,區別在於建構函式時建立,查詢時不會建立
// maints the actual view, key and data.class
viewprop
::data
: public
base::
refcounted
<
viewprop
::data
>
if (!
create
)
return
; data_set_->insert(new_data.get());
*data
= new_data.get();
} // the data.
void
set_data(
void
* data
)
void
* data()
const
const char
* key()
const
private:
friend class
base::
refcounted
<
data
>;
// used to order the data in the map.
class
datacomparator
};typedef
std::
set<
data
*, datacomparator
>
dataset
; data(gfx::
acceleratedwidget
view
, const char
* key
) : view_(
view
), key_(
key),
data_(
null
) {}
~data()
// the existing set of data is stored here. ~data removes from the set.
static
dataset
* data_set_;
const
gfx::
acceleratedwidget
view_;
const char
* key_;
void
* data_;
disallow_copy_and_assign
(data
);};
// static
viewprop
::data
::dataset
* viewprop
::data
::data_set_ =
null
;
原始碼剖析 Hashtable 原始碼剖析
hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...
python原始碼剖析 Python原始碼剖析
第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...
Erlang hotwheels原始碼剖析
整體構架 janus transport sup 實質為transport,supervisor,client instance supervisor 每個tcp會話建立乙個transport程序來處理對應客戶端的請求。janus topman sup 實質為topman,worker,topic ...