STL-容器庫101--array【C11】

1. 原型

C11提供

template < class T, size_t N > class array;

T: 元素類型,以 array::value_type 作為別名使用;
N: array中元素大小;
  • 固定size的序列容器;
  • 初始化時, array對象不保存任何數據,除了編譯時期的行為對“元素”參數的編譯器初始化值
  • 和普通的數組一樣,從[]訪問
  • array僅僅為數組封裝了一層成員函數和全局函數,以作為標準容器使用
  • array固定容器大小,不能擴展容量;
  • 0大小的array是有效的,但是不能訪問數據。
  • STL ?中的swap操作是非常低效率的操作;
  • array容器能夠作為tuple對象(元組對象)使用。 頭文件<array>中重載了get函數來獲取array中的元素值。
使用頭文件:
  #include <array>

?1.1 成員類型:

array中的成員類型作為一些參數、或者返回值類型的別名使用,下面的是別面以及定義:

  • value_type:模板參數T
  • reference: value_type&
  • const_reference: const value_type&;
  • pointer: value_type*
  • const_pointer: const value_type*;
  • iterator: 隨機指向value_type的迭代器
  • const_iterator: 指向const value_type類型的迭代器
  • reverse_iterator:?
  • const_reverse_iterator:
  • size_type: size_t(無符號整數 unsign int
  • difference_type: ptrdiff_t(符號整形 int

1.2 成員函數

(1)Iterators

Array::begin:

Array::end:

Array::rbegin:

Array::rend;

Array::cbegin

Array::cend;

Array::crbegin

Array::crend;

?

(2)Capacity

Array::?size(): 元素數量

Array::max_size():最大容量

Array::expty(): 測試是否為空

?

(3)Element access

Array:: operator[]: 
  • 返回參數n位置的reference,注意,第一個元素位置為0
  • 與 成員函數at()具有相同的行為, 但是array::at()是會檢查參數n是否越界,以及如果越界則拋出異常信號
  • 如果是const的array,則返回const_reference,否則返回reference
  • 注意:refenerence的樣式是類型array內的別名定義。

?

?

reference at ( size_type n );

const_reference at ( size_type n ) const;

  • 返回參數n位置的reference。自定檢測n是否位于有效的范圍內。并拋出out_of_rance 異常。如果n 大于size或者等于size

Array::front();

  • 返回第一個元素的reference
  • Calling this function on an empty container causes undefined behavior.

Array::back();

  • 返回最后一個元素的reference, 不像array::end()返回的是iterator
  • Calling this function on an empty container causes undefined behavior.

Array::data();

  • 返回pointer類型指向第一個元素;
  • 因為array類型是連續內存分配,因此可以對pointer進行任何偏置訪問相應位置數據;

(4)Modifiers

void Array::fill(const value_type& val):
  • 對數組中的所有元素設置參數值
void Array::swap(array& x):
  • 交換內容,兩個對象具有相同的size;
  • 調用之后,兩個對象互相交換內容;

?

?

?1.3 非成員函數重載

  get(array)

?返回array 中的第i個元素屬性引用。

?

  relational operators(array)

?

?

?

?

1.4 非成員 類的聲明

(1)tuple_element<array>

(2)tuple_size<array>

?

轉載于:https://www.cnblogs.com/icmzn/p/8642704.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252098.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#:向C++封送結構體數組

在使用第三方的非托管API時&#xff0c;我們經常會遇到參數為指針或指針的指針這種情況&#xff0c; 一般我們會用IntPtr指向我們需要傳遞的參數地址&#xff1b; 但是當遇到這種一個導出函數時,我們如何正確的使用IntPtr呢&#xff0c; extern "C" __declspec(dll…

其它綜合-CentOS7 忘記root密碼

CentOS7 忘記root密碼 長時間不用的 CentOS 機器再次開機的時候忽然忘記了密碼&#xff0c;總不能就重裝一臺吧&#xff0c;還有好多服務在機器上&#xff0c;于是決定重置root的密碼。   如果是已經開啟的機器&#xff0c;需要進行關閉&#xff0c;重新啟動。在啟動選擇內核…

left join on and 與 left join on where的區別

數據庫在通過連接兩張或多張表來返回記錄時&#xff0c;都會生成一張中間的臨時表&#xff0c;然后再將這張臨時表返回給用戶。 在使用left jion時&#xff0c;on和where條件的區別如下&#xff1a; 1、 on條件是在生成臨時表時使用的條件&#xff0c;它不管on中的條件是否為真…

spring boot高性能實現二維碼掃碼登錄(中)——Redis版

前言 本打算用CountDownLatch來實現&#xff0c;但有個問題我沒有考慮&#xff0c;就是當用戶APP沒有掃二維碼的時候&#xff0c;線程會阻塞5分鐘&#xff0c;這反而造成性能的下降。好吧&#xff0c;現在回歸傳統方式&#xff1a;前端ajax每隔1秒或2秒發一次請求&#xff0c;去…

C# :socket 通訊基礎使用實例

們在講解Socket編程前&#xff0c;先看幾個和Socket編程緊密相關的概念&#xff1a; TCP/IP層次模型當然這里我們只討論重要的四層 01&#xff0c;應用層(Application)&#xff1a;應用層是個很廣泛的概念&#xff0c;有一些基本相同的系統級TCP/IP應用以及應用協議&#xff0…

IBM發表論文:可能已找到處理量子計算退相干的方法

在《自然》雜志最近發表的一篇論文中&#xff0c;IBM和其他機構的研究人員設計了兩種量子算法&#xff0c;利用變分量子電路和量子核估計器來訓練一種支持向量機分類器。這兩種算法背后的關鍵思想是使用量子狀態空間作為特征空間表示&#xff0c;有效地構建映射&#xff0c;從原…

PHP + NGINX 控制視頻文件播放,并防止文件下載

最簡單的方法是使用NGINX的 internal 功能 server { listen 80; server_name www.xxx.com;  location / { index index.php index.html index.htm; root /xxx; if (!-e $request_filename) { rewrite ^/index.php(.*)$ /index.php?s$…

可視化調試工具

rosrun rqt_console rqt_console # 查看日志消息&#xff0c;可filter、highlight指定級別。 rosrun rqt_logger_level rqt_logger_level # 可設在日志記錄器的嚴重級別 rosrun rqt_topic rqt_topic # 顯示topic調試信息 rosrun rqt_publisher rqt_publisher # 在界面中管理ro…

C#:委托基礎與事件

通過以下思維導圖&#xff0c;學習委托的基本概念&#xff0c;后面著重講解委托的運用&#xff0c;希望通過最簡單的方式收獲更多的知識。 1.委托的各種寫法 1、委托 委托名new 委托&#xff08;會調用的方法名); 委托名&#xff08;參數&#xff09;; 2、委托 委托名 會調用…

Git Bash關鍵命令

1.默認目錄是C:\Users\用戶名 2.切換目錄&#xff1a;$cd c:\\windows 3.切換到上級目錄&#xff1a;cd ..&#xff0c;中間有空格 4.列出某目錄所有文件&#xff0c;相當于DOS下的dir&#xff1a;ls c:\\windows 5.查看配置信息&#xff1a;git config --list 以下是顯示信息 …

C#:invoke 與 BeginInvoke使用區別

invoke和begininvoke 區別 一直對invoke和begininvoke的使用和概念比較混亂&#xff0c;這兩天看了些資料&#xff0c;對這兩個的用法和原理有了些新的認識和理解。 首先說下&#xff0c;invoke和begininvoke的使用有兩種情況&#xff1a; 1. control中的invoke、begininvoke。…

Django基本命令

Django基本命令 1.創建一個Django 項目 django_admin.py startproject mysite當前目錄下會生成mysite的工程&#xff0c;目錄結構如下&#xff1a; manage.py ----- Django項目里面的工具&#xff0c;通過它可以調用django shell和數據庫等。settings.py ---- 包含了項目的默認…

Git忽略規則.gitignore梳理

對于經常使用Git的朋友來說&#xff0c;.gitignore配置一定不會陌生。廢話不說多了&#xff0c;接下來就來說說這個.gitignore的使用。首先要強調一點&#xff0c;這個文件的完整文件名就是".gitignore"&#xff0c;注意最前面有個“.”。 一般來說每個Git項目中都需…

第二周CoreIDRAW課總結

1.這節課學到了什么知識&#xff1f; 學到了圖像的復制&#xff0c;再制鼠標復制&#xff0c;重復&#xff0c;還有對象的對齊&#xff0c;對象的分布順序。 2.有哪些心得體會&#xff1f; 做了課本的練習&#xff0c;會用窗口里面的泊塢窗造型命令也作出了一個作品。 3.這節課…

axios關于針對請求時長策略設計的思考

前言 在我們的業務請求中&#xff0c;有很多時候會針對有不同時長的需求策略性設置。這里針對這個需求進行詳細的展開。 針對這種情況&#xff0c;我們的timout的一般是根據請求地址來的&#xff0c;所以核心處理技巧便是如何根據不同的request地址去設置不同的timeout. 我們之…

C#:WinForm無邊框窗體移動方法、模仿鼠標單擊標題欄移動窗體位置

方法一&#xff1a;直接通過修改窗體位置從而達到移動窗體的效果 方法二&#xff1a;直接偽裝發送單擊任務欄消息&#xff0c;讓應用程序誤以為單擊任務欄從而移動窗體 方法一 1.定義一個位置信息Point用于存儲鼠標位置 private Point mPoint; 2.給窗體等控件增加MouseDown…

Python 字典刪除元素clear、pop、popitem

同其它python內建數據類型一樣&#xff0c;字典dict也是有一些實用的操作方法。這里我們要說的是字典刪除方法&#xff1a;clear()、pop()和popitem()&#xff0c;這三種方法的作用不同&#xff0c;操作方法及返回值都不相同。接下來就來查看下這些字典特定方法的具體用法是什么…

reactor模式:多線程的reactor模式

上文說到單線程的reactor模式 reactor模式&#xff1a;單線程的reactor模式 單線程的reactor模式并沒有解決IO和CPU處理速度不匹配問題&#xff0c;所以多線程的reactor模式引入線程池的概念&#xff0c;把耗時的IO操作交由線程池處理&#xff0c;處理完了之后再同步到selecti…

Elasticsearch實戰篇——Spring Boot整合ElasticSearch

2019獨角獸企業重金招聘Python工程師標準>>> 當前Spring Boot很是流行&#xff0c;包括我自己&#xff0c;也是在用Spring Boot集成其他框架進行項目開發&#xff0c;所以這一節&#xff0c;我們一起來探討Spring Boot整合ElasticSearch的問題。 本文主要講以下內容…

C#:Dockpanel的一些入門的基本操作

原文鏈接&#xff1a; 一、引用&#xff1a; 1.建立一個WinForm工程&#xff0c;默認生成了一個WinForm窗體Form1&#xff08;此處默認為主窗體&#xff09;。 2.引用—>添加引用—>瀏覽—>weiFenLuo.winFormsUI.Docking.dll。 3.設置Form1窗體屬性IsMdiContainer…