boost::any的一般用法

來源:互聯網
上載者:User

標籤:對象   記憶體   boost   

01.#include <iostream>   
02.#include <list>   
03.#include <boost/any.hpp>   
04.  
05.typedef std::list<boost::any> list_any;   
06.  
07.//關鍵區段:可以存放任意類型的對象   
08.void fill_list(list_any& la)   
09.{       
10.    la.push_back(1000);//存放常數    
11.    la.push_back( std::string("this is an example") );//存放字串對象;注意la.push_back(“dyunze”)錯誤,因為會被當錯字串數組   
12.}   
13.  
14.//根據類型進行顯示   
15.void show_list(list_any& la)   
16.{   
17.    list_any::iterator it;   
18.    boost::any anyone;   
19.  
20.    for( it = la.begin(); it != la.end(); it++ )   
21.    {      
22.        anyone = *it;   
23.  
24.        if( anyone.type() == typeid(int) )   
25.            std::cout<<boost::any_cast<int>(*it)<<std::endl;   
26.        else if( anyone.type() == typeid(std::string) )   
27.            std::cout<<boost::any_cast<std::string>(*it).c_str()<<std::endl;   
28.    }   
29.}   
30.  
31.int main()   
32.{   
33.    list_any la;   
34.    fill_list(la);   
35.    show_list(la);   
36.  
37.    return 0;   

38.} 


輸出:  

1000

this is an example

boost::any的一般用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.