1. 程式人生 > >C++順序容器初始化

C++順序容器初始化

順序容器

容器:

一些特定型別物件的集合。

我個人理解是:一群我們定義好的資料型別存放在一個特定的區域,而這個區域呢就是容器。

順序:

有序的,且不依賴於元素的值,而是在我們存放資料時的位置相對應。

個人理解:我們最開始存放一個數據,然後接下來的資料都是依次存放在上一個資料後面位置。

標準庫中的順序容器(C++primer 第九章表)

TypeFunction
vector可變大小陣列(動態陣列)。支援快速訪問。在尾部之外的位置插入資料可能很慢
list雙向連結串列。只支援雙向順序訪問。在list中任何位置進行插入\刪除操作都很快。
deque雙向佇列。支援快速隨機訪問。在頭尾位置插入\刪除速度很快。
forward_list 單向連結串列。只支援單項順序訪問。在連結串列中任何位置進行插入\刪除操作都很快。
array固定陣列大小。支援快速訪問。不能新增和刪除元素。
string與vector相似,專門儲存字元的容器。

Example:

/*
*  順序容器的初始化,與輸出。
*  2018年 05月 23日 星期三 18:08:32 CST
*/


//-------呼叫各種容器的標頭檔案-----------------
#include<iostream>
#include<deque>
#include<list>
#include<string>
#include<array>
#include<forward_list> #include<vector> //----------------------------------------- using namespace std; int main() {  //定義以及初始化容器  vector<int> age{1,2,3,4,5};  //age是一個動態陣列,其型別是vector,容器裡面儲存資料型別是整型。  list<const char *> sex{"male","female"};  //sex是一個雙向連結串列型別,其中儲存的資料型別為字元指標常量
 deque<string> name{"bob","alice"};  //name 是一個雙向佇列型別,其中儲存的型別是字串型別  vector<int> num(age);  //num與age相同,只是其初始化不同於age,而是copy操作,把age的元素copy到num中。  list<string> can(name.begin(),name.end());  /*因為copy容器的話,需要容器型別和容器中元素型別相同,array需要大小也作為比較引數。   *滿足前面這些要求,就可copy。如果有一個不匹配,便不能copy。   *但一種情況下,就是容器型別可以不同,容器中元素也可以不同,但被拷貝容器中元素可以轉換成拷貝容器中元素型別   *便可以用一個容器的範圍引數傳遞給另一個容器的建構函式。   *例如上面兩個容器型別相同,但儲存資料型別不同,但可以通過範圍引數進行copy。 */  const int size=9;  //array 固定大小的陣列。與內建陣列不同的是它可以copy而且更安全。  array<string ,size> boss{"馬化騰","馬雲","雷軍","李彥巨集"};  array<int ,size> ascii{1,2,3,1};  //定義array容器的時候類似於前面幾個容器,但是需要指定容器大小,而且沒有被使用者初始化的元素,會被系統初始化 //--------------------------------------- /* *用常規for語句通過迭代器進行解操作輸出 *begin()指向容器開始 *end()指向容器元素末尾的下一個位置 *rbegin()返回反向迭代器,指向容器結束的位置 *rend()指向容器開始的上一個位置 */  for(auto neg=age.begin();neg!=age.end();neg++) {    cout<<*neg<<"\t"; } cout<<endl;  for(auto neg=age.rbegin();neg!=age.rend();neg++) {    cout<<*neg<<"\t"; } cout<<endl; /* *用範圍for語句遍歷上述容器中的元素 */ for(auto i: sex) {  cout<<i<<"\t"; } cout<<endl; for(auto i:boss) cout<<i<<"\t"; cout<<boss.size()<<endl; for(auto i:ascii) cout<<i<<"\t"; cout<<endl;    return 0; }

Run:

[email protected]:~/c++/c++bin/ch1$ ./SequenceContainer 
12345
54321
malefemale
馬化騰馬雲雷軍李彥巨集9
123100000

一步一步慢慢學,不怕學的比別人慢,就怕什麼也沒學懂。

----致自己

相關推薦

C++順序容器初始

順序容器容器: 一些特定型別物件的集合。我個人理解是:一群我們定義好的資料型別存放在一個特定的區域,而這個區域呢就是容器。順序: 有序的,且不依賴於元素的值,而是在我們存放資料時的位置相對

C++順序容器類中物件初始、賦值、swap

順序容器中,對於初始化物件,除了使用列表和一對迭代器初始化物件時,列表中元素和求迭代器所引用的值跟初始化的物件相容即可。其他的都需要保證型別完全相同 至於賦值,C++順序容器來還定義了一個assig

C++ 建構函式初始呼叫順序及類函式內部巢狀函式情況

C++建構函式初始化順序 C++建構函式按下列順序被呼叫:(1、2、3、4是按照優先順序順序來的!) (1)任何虛擬基類的建構函式按照它們被繼承的順序構造; (2)任何非虛擬基類的建構函式按照它們被繼承的順序構造; (3)任何成員物件的建構函式按照它們宣告的順序呼叫;(如果成員物件有前面出現

SpringIOC容器初始之後,和銷燬之前幾種方法的執行順序

1.搭建一個簡單的Spring環境 2.定義一個介面及其實現類 package com.roger.service; public interface SpringLifeCycleService { void springLifeCycle(); } package co

C++類成員初始順序問題

今天剛把買了一個月的劍指offer這本書翻閱一下,看到一個簡單的舉例。說應聘C++崗位的不知道成員變數初始化順序!大冬天的背後竟冒出了一絲冷汗,因為我也不知道,所以就上網查了一下,將學到的知識記錄如下。 主要參考部落格: 問題來源: 由於面試題中,

C++ -> 容器初始】結構體巢狀複雜結構初始

案例簡述 最近在設計資料結構時,資料之間較為複雜,資料結構如下: typedef struct tagDataInfo { long offs; // 索引 char name[20]; /

C++複習筆記——初始列表順序

參考測試程式碼1: #include<iostream> using namespace std; class A { public: A(int iniI,int iniJ,int iniK):i(iniI),j(i),k(iniK){}

順序棧的C語言實現——初始函式、入棧函式和出棧函式

將順序棧的結構定義為: #define  M  100   //棧的空間 typedef struct   {   int data[M]; int top;   } SqStack; 試寫出SqStack的初始化函式、入棧函式和出棧函式 。並在main()函式中測試上述

C#類的初始順序

類的初始化 就是 執行順序 靜態 初始 副本 只有一個 靜態成員 初始化 類在初始化時的執行順序,依次如下: 1: 子類靜態變量 2: 子類靜態構造函數 3: 子類非靜態變量 4: 父類靜態變量 5: 父類靜態構造函數 6: 父類非靜態變量 7: 父類構造函數

Linux下C結構體初始

直觀 tro 擴展性 方式 建議 struct 初始化方式 www 寫到 原文地址在這裏: http://www.cnblogs.com/Anker/p/3545146.html 我 只把裏面的主要介紹和代碼寫到這裏了. 順序初始化   教科書上講C語言結構體初始化

多重繼承關系初始順序初始

java 所有 clas 屬性 配對 -- 如果 實現 硬盤 順序:父類屬性--> 父類構造方法--> 子類屬性--> 子類構造方法 初始化: 1.在創建類之前,檢查是否已加載檢查硬盤上的.class是否加載到內存中,如果沒有加載就先加載父類的文件,再加載

main.c 流程-buffer初始

device wait clean node lean free long 表鏈 pan void buffer_init(long buffer_end)函數的理解: * 0 0x100000 0x400000

C# 對象初始器和集合初始

price pub 構造 itl str public 通過 list 集合 /// <summary>/// 圖書類/// </summary>public class Book { /// <summary> ///

C# 串口初始

串口 rs232 com口 初始化C# 串口初始化方法之一。完整例程中定義了多個串口,程序運行初始會從配置文件加載串口設置並批量初始化串口。... using System.Text.RegularExpressions; ... //Example, InitPort(gdmPort, 2, "11520

C++中的初始參數列表

圖片 .com 包含 自然 cout csharp pan 初始化列表 arp c++中以下幾種情況的變量的初始化不可以寫在構造函數裏,而是要寫在初始化參數列表中 1.const常量 class AA { public : const int num; publi

C++順序容器知識總結

交換 prior 效率 導致 獲取 tac pos stack empty   容器是一種容納特定類型對象的集合。C++的容器可以分為兩類:順序容器和關聯容器。順序容器的元素排列和元素值大小無關,而是由元素添加到容器中的次序決定的。標準庫定義了三種順序容器的類型:vecto

Spring源碼分析總結(一)-IOC容器初始

Spring源碼分析總結一、IOC容器的初始化過程 IOC容器的初始化是由refresh()方法啟動。經常使用的ApplicationContext 有:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext、XmlWebApp

03.Spring IoC 容器 - 初始

itl ret num servlet fontsize eat 圖片 number sources 基本概念 Spring IoC 容器的初始化過程在監聽器 ContextLoaderListener 類中定義。 具體由該類的的 configureAndRefreshWe

spring原始碼學習之路---IOC容器初始要義之bean定義載入(四)

上章說到要帶各位去看看bean定義載入的要義,其實就是loadBeanDefinitions這個方法的具體實現步驟,下面我們跟隨這個方法去看下它到底是如何載入bean定義的。 上面是我擷取的實現了loadBeanDefinitions的類級別截圖,loadBeanDefinit

spring原始碼學習之路---深度分析IOC容器初始過程(三)

分析FileSystemXmlApplicationContext的建構函式,到底都做了什麼,導致IOC容器初始化成功。 public FileSystemXmlApplicationContext(String[] configLocations, boolean ref