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)
拋出:
不拋出異常。 #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++法式設計有所贊助。