boost 系列四 Array和FOREACH

本文详细介绍了boost::array的使用方法,包括初始化、迭代遍历、逆序遍历、元素访问及修改、赋值与交换等操作,并提供了丰富的示例代码。

boost::array是静态数组的代替,以下为一个参考例子:

#include <boost/array.hpp>  
#include <boost/typeof/typeof.hpp>  
#include <boost/foreach.hpp>  

{
        boost::array<int,4> arrf={1,2,3,4};//=operator  
        boost::array<int,4> arrs={4,3,2,1};//=operator  
        arrs = arrf ;//=operator(const &)  
        /** 
        begin(); 
        end(): 
        iterator 
        **/  
        boost::array<int,4>::iterator iter;    
        for(iter= arrs.begin();iter!=arrs.end();iter++)  
        {  
                std::cout<<*iter<<' ';  
                std::cout<<std::endl;  
        }  


        /** 
        BOOST_FROEACH 
        BOOST_TYPEOF 
        **/  
        BOOST_FOREACH(BOOST_TYPEOF(*arrs.begin()) elem,arrs)  
        {  
                std::cout<<elem<<' ';  
                std::cout<<std::endl;  
        }  
  
        /** 
        rbegin() 
        rend(); 
        reverse_iterator 
        **/  
        boost::array<int,4>::reverse_iterator rIter;  
  
        for(rIter = arrs.rbegin();rIter!=arrs.rend();rIter++)  
        {  
                std::cout<<*rIter<<' ';  
                std::cout<<std::endl;  
        }  
  
        
        /** 
        BOOST_FOREACH 
        BOOST_TYPEOF 
        **/  
        BOOST_FOREACH(BOOST_TYPEOF(*arrs.rbegin()) elem,arrs)  
        {  
                std::cout<<elem<<' ';  
                std::cout<<std::endl;  
        }  
  
        /** 
        size() 
        operator [] 
        at() 
        **/  
        for(std::size_t i =0;i<arrs.size();i++)  
        {  
                std::cout<<arrs[i]<<' ';  
                std::cout<<arrs.at(i)<<' ';  
                std::cout<<std::endl;  
        }  
  
        /** 
        back() 
        front() 
        **/    
        std::cout<<arrs.back()<<std::endl;  
        std::cout<<arrs.front()<<std::endl;  
  
        /** 
        data() 
        c_array() 
        **/    
        const int* dt = arrs.data();  
        /*dt[0] = -1; 
         
        std::copy(arrs.begin(),arrs.end(),std::ostream_iterator<int>(std::cout," ")); 
        std::cout<<std::endl; 
        */  
        int* dtN = arrs.c_array();  
  
        dtN[0] = 1;  
        std::copy(arrs.begin(),arrs.end(),std::ostream_iterator<int>(std::cout," "));  
  
  
        /** 
        assign 
        **/    
        arrs.assign(10);    
        std::cout<<std::endl;  
        std::copy(arrs.begin(),arrs.end(),std::ostream_iterator<int>(std::cout," "));  
        std::cout<<std::endl;  
  
        /** 
        swap 
        **/    
        arrs.swap(arrf);    
        BOOST_FOREACH(BOOST_TYPEOF(*arrs.begin()) elem , arrs)  
        {  
                std::cout<<elem<<' ';  
        }  
    }


在实际使用时可以使用自定义类型来替换宏BOOST_FOREACH等:

#define myforeach BOOST_FOREACH

#define mytype BOOST_TYPEOF



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值