程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++之Boost::array用法簡介

C++之Boost::array用法簡介

編輯:關於C++

C++之Boost::array用法簡介。本站提示廣大學習愛好者:(C++之Boost::array用法簡介)文章只能為提供參考,不一定能成為您想要的結果。以下是C++之Boost::array用法簡介正文


本文實例講述了c++裡支撐靜態數組的容器:boost.array。分享給年夜家供年夜家參考。詳細剖析以下:

許多C++法式員都以為boost.array很有能夠湧現鄙人一代尺度庫裡。關於boost.array的用法有一個根本的懂得是很有需要的。

1. 為何我們須要固定年夜小的數組的容器

起首,固定年夜小的數組照樣很罕見的,固然stl供給了vector,然則vector作為靜態可增加的數組,比靜態數組多了一點開支,這在一些人看來是沒法忍耐的。c++裡也須要供給固定年夜小容量的數組容器,固然,機能可以和通俗數組想媲美。

boost.array應此需求而生。

boost.array 完成了年夜部門但不是全體的“可逆容器(reversable container)”的需求。array 不是一個 STL 可逆容器的緣由在於:

① 沒有供給結構函數。
② 元素能夠有一個不肯定的初始值。
③ swap() 不具有常量龐雜度。
④ size() 基於第二個模板參數的類型,老是恆定的。
⑤ 容器不供給分派器支撐。

它沒有完成“序列”的需求(詳細可拜見 C++ 尺度的 23.1.1, [lib. sequence.reqmts]),但以下這些除外:

① 供給了 front() 和 back()。
② 供給了 operator[] 和 at()。

2. 頭文件和相干成員函數聲明:
Reference
Header <boost/array.hpp>
Class template array(類模板 array)
array 私有的 結構/拷貝/析構

template<typename U> array& operator=(const array<U, N>& other);

array 迭代器支撐:

1.iterator begin();
const_iterator begin() const;

前往:

位於第一個元素的迭代器

拋出:

不拋出異常

2.iterator end();
const_iterator end() const;

前往:

位於最初一個元素以後地位的迭代器

拋出:

不拋出異常

array 反向迭代器支撐:

1.reverse_iterator rbegin();
const_reverse_iterator rbegin() const;

前往:

位於反向迭代的第一個元素的反向迭代器

2.reverse_iterator rend();
const_reverse_iterator rend() const;

前往:

位於反向迭代的最初一個元素以後地位的反向迭代器

array 容量:

1.size_type size();

前往:

N

2.bool empty();

前往:

N==0

拋出:

不拋出異常

3.size_type max_size();

前往:

N

拋出:

不拋出異常

array 元素拜訪:

1.reference operator[](size_type i);
const_reference operator[](size_type i) const;

Requires:

i < N

前往:

索引為 i 的元素

拋出:

不拋出異常。

2.reference at(size_type i);
const_reference at(size_type i) const;

前往:

索引為 i 的元素

拋出:

std::range_error if i >= N

3.reference front();
const_reference front() const;

請求:

N > 0

前往:

第一個元素

拋出:

不拋出異常

4.reference back();
const_reference back() const;

請求:

N > 0

前往:

最初一個元素

拋出:

不拋出異常

5.const T* data() const;

前往:

elems

拋出:

不拋出異常

6.T* c_array();

前往:

elems

拋出:

不拋出異常

array 修正器:

1.void swap(array<T, N>& other);

後果:

std::swap_ranges(begin(), end(), other.begin())

龐雜度:

基於 N 的線性增加

2.void assign(const T& value);

後果:

std::fill_n(begin(), N, value)

array 特別算法:

1.template<typename T, std::size_t N> void swap(array<T, N>& x, array<T, N>& y);

後果:

x.swap(y)

拋出:

不拋出異常。  
可見boost.array供給了和STL容器的通用接口。是以用起來很簡略。值得一提的是,boost並沒有供給自界說的結構函數和拷貝結構函數。然則boost.array可以如許初始化:

#include<boost/array.hpp>
#include<iostream>
using namespace std;
using namespace boost;
int main()
{
     array<int,6> a = {1,2,3,4,5,6};
     //通俗數組相分歧的拜訪情勢
     for(size_t i = 0; i < a.size(); i++)
        cout << a[i] << " " ;
     cout << endl;
 
          //迭代器拜訪
     array<int,6>::iterator itr = a.begin();
     for(;itr != a.end();++itr)
         cout << *itr << " " ;
     cout << endl;
    
     //支撐at()
     cout << a.at(5) << endl;
   
     return 0;
 }

願望本文所述對年夜家的C++法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved