boost::array库的使用
2012-12-14 10:37
141 查看
boost::array函数原型:
namespace boost { template<typename T, std::size_t N> class array; template<typename T, std::size_t N> void swap(array<T, N>&, array<T, N>&); template<typename T, std::size_t N> bool operator==(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator!=(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator<(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator>(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator<=(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator>=(const array<T, N>&, const array<T, N>&); }
// In header: <boost/array.hpp> template<typename T, std::size_t N> class array { public: // types typedef T value_type; typedef T* iterator; typedef const T* const_iterator; typedef std::reverse_iterator<iterator> reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef T& reference; typedef const T& const_reference; typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; // static constants static const size_type static_size = N; // construct/copy/destruct template<typename U> array& operator=(const array<U, N>&); // iterator support iterator begin(); const_iterator begin() const; iterator end(); const_iterator end() const; // reverse iterator support reverse_iterator rbegin(); const_reverse_iterator rbegin() const; reverse_iterator rend(); const_reverse_iterator rend() const; // capacity size_type size(); bool empty(); size_type max_size(); // element access reference operator[](size_type); const_reference operator[](size_type) const; reference at(size_type); const_reference at(size_type) const; reference front(); const_reference front() const; reference back(); const_reference back() const; const T* data() const; T* c_array(); // modifiers void swap(array<T, N>&); void assign(const T&); // public data members T elems ; }; // specialized algorithms template<typename T, std::size_t N> void swap(array<T, N>&, array<T, N>&); // comparisons template<typename T, std::size_t N> bool operator==(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator!=(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator<(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator>(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator<=(const array<T, N>&, const array<T, N>&); template<typename T, std::size_t N> bool operator>=(const array<T, N>&, const array<T, N>&);应用举例:
/** @author Amiber @date 2012-12-14 @brief boost::array **/ #include <iostream> #include <cstring> #include <algorithm> #include <functional> #include <iterator> #include <boost/array.hpp> #include <boost/typeof/typeof.hpp> #include <boost/foreach.hpp> int main(int argc,char* argv[]) { 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<<' '; } return 0; }
相关文章推荐
- boost.array源码整理和使用说明
- boost.array 使用实例
- boost之scoped_array的使用
- boost::array与std::vector使用与性能
- Boost学习笔记(二)------boost::array数组的使用
- boost之scoped_array的使用
- (原創) 如何使用boost::array? (C/C++) (template) (boost)
- Boost:使用shared_array和shared_ptr
- Boost::Array与Std::Vector使用与性能
- System.Array简单使用
- ListView 使用arrayadapter初始化数据
- stl::map,stl::multimap,boost::tuple使用简介
- PHP – 在类中使用array_filter时回调函数的问题
- JSONObject与JSONArray的使用
- 数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用 Array 而不是 ArrayList?
- 关于boost::function与boost::bind函数的使用心得
- Boost下载安装编译配置使用指南(含Windows和Linux)
- NSMutableArray的基本使用
- 使用Boost_MPI编程
- 玩转Windows服务系列——使用Boost.Application快速构建Windows服务