三個基本法則
40、虛函式遇到構造析構就退化了
41、重新審視 auto
42、左值引用和右值引用(不考慮模板)
45、用 weak_ptr 打破迴圈引用
48、使用智慧型指標需要注意的幾個「坑」
objectptr obj3
(new object(2
));// 會呼叫兩次new()
objectptr obj4 = obj3;
// 拷貝操作非原子操作,比較複雜,尤其是在多執行緒程式設計中
objectptr obj5 = std:
:make_shared(3
);// 保證只會呼叫一次new()
49、lambda 函式// 作為本地變數
auto local =
(int a,
int b)
local(1
,2);
// 作為引數
template
void
printusefunc
(func func,
int a,
int b)
printusefunc([
](int a,
int b),1
,2);
// 也可將外部引數傳遞進去
int a =1;
int b =2;
// [&a, &b]引用 or [=]全部採用 or [&]全部引用
auto local =
[a, b]()
local()
;// 這一切與lua中的function功能相似
50、概述
51、容器儲存的是什麼
52、容器的通用介面
53、std::array
54、std::verctor
55、std::deque
// 儲存世界聊天內容
using buffer = std:
:vector<
char
>
;using group = std:
:deque
;
56、std::list// 找到中間元素
auto iterbegin = a.
begin()
;// 初學者方法
for(
int i =
0; i <4;
++i)
++iterbegin;
// 高階一點的方法
std:
:advance
(iterbegin,4)
;auto iter5 = std:
:next
(iterbegin,4)
;// 但最好不要出現這樣的情況,如果頻繁訪問中間元素,而不是插入刪除,可能用別的container會好一些。
// 演算法
b.remove
(1.0f);
// 值等於1.0f的全部刪除
b.remove_if([
](auto v));
// 傳入比較條件,滿足的全部刪除。
b.reverse()
;// 反轉列表
b.sort()
;// 預設以"<"排序。// stl的std::sort(a.begin(), a.end());對於list編譯出錯,所以list自帶sort()方法。
g.sort()
;b.merge
(g);
// 合併兩個排好序的列表。
c.unique()
;// 去重排好序的列表。沒排好序的也能去重,只不過結果不對。1 1 2 2 1 1 3 4 -> 1 2 1 3 4
c.splice
(c.begin()
, b)
;// 在c的某個位置插入整個b。
總結:在使用list和演算法的時候,優先考慮list自身的演算法,更高效。
57、std::forward_list
58、智慧型指標的乙個陷阱
// 單次消耗時間對比(納秒)
int1.00
int*
1.23
sharedptr 1.49
weakptr 14.64
第三方程式:celero::run(argc, argv);
總結:頻繁使用、迴圈遍歷(玩家或怪物列表),不建議使用weak_ptr。
59、std::set
60、std::set(第二部分)
61、std::map
auto finditer = b.at(
10);if
(finditer != std:
:end
(b)/* b.end() */
)else
// 包裝
template
typename map:
(const map &map,
const typename map:
:key_type &key,
const typename map::(
))auto info =
get_default
(b,10);
if(info.
empty()
)else
62、std::unordered set/map 遊戲伺服器開發 準備篇 初識遊戲伺服器開發
近期轉換了工作方向,從web開發走向了遊戲開發。此前的工作中,主要負責web分布式專案的開發,rest服務開發,幷包含一部分im系統的開發。分布式系統框架,資料庫,nosql接觸的比較多,比較雜。而新工作比較單一,主要負責遊戲伺服器的業務開發。使用的也是前輩封裝好的框架。後來發現,原來全公司都使用了...
ACE開發遊戲伺服器
在 win32 平台上最有效率的 io模型,莫過於完成埠了。csdn 上到處都是關於完成埠的問題。在 ace中對 win32 平台的完成埠有著非常好的封裝。ace中前攝式框架的 win32 實現就是使用的完成埠。我們先來看看這個框架有哪些組成部分。ace proactor 前攝器,真怪異的名字。叫非...
c 遊戲伺服器框架
2 muduo是乙個基於 reactor 模式的 c 網路庫 3 boost asio 是乙個非同步的網路框架 官網 第三方教程 4 libevent 官網 5 ace是乙個很成熟的中介軟體產品,為自適應通訊環境,但它過於巨集大,一堆的設計模式,架構是一層又一層,對初學者來說,有點困難。pss開源框...