原文:(原創)用c++11打造好用的variant(更新)

關於variant的實現參考我前面的博文,不過這第一個版本還不夠完善,主要有這幾個問題: 內部的緩沖區是原始的char ,沒有考慮內存對齊 沒有visit功能。 沒有考慮賦值構造函數的問題,存在隱患。 這次將解決以上問題,還將進一步增強variant的功能。增加的功能有: 通過索引位置獲取類型。 通過類型獲取索引位置。 c 的內存對齊 關於內存對齊的問題,將用c 的std::aligned st ...

2014-02-21 14:44 2 9118 推薦指數:

查看詳情

原創)用c++11打造好用variant

  variant類似於union,它能代表定義的多種類型,允許將不同類型的值賦給它。它的具體類型是在初始化賦值時確定。boost中的variant的基本用法:   用variant一個好處是可以擦除類型,不同類型的值都統一成一個variant,雖然這個variant只能存放已定 ...

Sun Nov 10 18:47:00 CST 2013 2 5138
原創)用c++11打造好用的any

  上一篇博文用c++11實現了variant,有童鞋說何不把any也實現一把,我正有此意,它的兄弟variant已經實現了,any也順便打包實現了吧。其實boost.any已經挺好了,就是轉換異常時,看不到詳情,和boost.variant一樣的問題。實現any比實現variant要簡單,需要 ...

Wed Nov 13 03:21:00 CST 2013 1 9370
原創)用c++11打造類似於python的range

  python中的range函數表示一個連續的有序序列,range使用起來很方便,因為在定義時就隱含了初始化過程,因為只需要給begin()和end()或者僅僅一個end(),就能表示一個連續的序列 ...

Sat Feb 08 22:35:00 CST 2014 1 2474
delegate委托的C++實現--C++11/14(原創)

熟悉C#的人都清楚delegate,也清楚委托的作用。 實現觀察者模式,在C++中的一種做法就是通過接口繼承來實現,這無疑大大增加了耦合度。通過delegate變可以解除這種耦合。 下面是上班時間,偷偷實現的一個我的delegate。直接上碼: 以下 ...

Fri May 16 06:59:00 CST 2014 0 3285
原創)用C++11的std::async代替線程的創建

  c++11中增加了線程,使得我們可以非常方便的創建線程,它的基本用法是這樣的:   但是線程畢竟是屬於比較低層次的東西,有時候使用有些不便,比如我希望獲取線程函數的返回結果的時候,我就不能直接通過thread.join()得到結果,這時就必須定義一個變量,在線程函數中去 ...

Mon Jan 27 00:40:00 CST 2014 13 37626
原創)用C++11的std::async代替線程的創建

原創)用C++11的std::async代替線程的創建   c++11中增加了線程,使得我們可以非常方便的創建線程,它的基本用法是這樣的:   但是線程畢竟是屬於比較低層次的東西,有時候使用有些不便,比如我希望獲取線程函數的返回結果的時候,我就不能 ...

Sat Dec 21 18:50:00 CST 2019 0 2152
原創C++11改進我們的程序之簡化我們的程序(七)

這次要講的內容是:c++11中的tuple(元組)。tuple看似簡單,其實它是簡約而不簡單,可以說它是c++11中一個既簡單又復雜的東東,關於它簡單的一面是它很容易使用,復雜的一面是它內部隱藏了太多細節,要揭開它神秘的面紗時又比較困難。   tuple是一個固定大小的不同類型值的集合,是泛化 ...

Fri Sep 13 06:30:00 CST 2013 7 18676
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM