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