【C++grammar】結構化綁定

目錄

  • 定義
  • 1、用于原生數組的結構化綁定聲明
  • 2、用于std::array的結構化綁定聲明
  • 3、用于對象數據成員的結構化綁定聲明

定義

結構化綁定聲明是一個聲明語句,意味著聲明了一些標識符并對標識符做了初始化。將指定的一些名字綁定到初始化器的子對象或者元素上。
對于初始化器賦值的理解:
在這里插入圖片描述

1、用于原生數組的結構化綁定聲明

若初始化表達式為數組類型,則標識符列表中的名字綁定到數組元素。

  1.   標識符數量必須等于數組元素數量 
    
  2.   標識符類型與數組元素類型一致
    
int main() {int priArr [] {42, 21, 7};// ai/bi/ci 的基本類型都是int,只是cv標識或引用標識不同auto [a1, a2, a3] = priArr; // a1 是 priArr[0] 的拷貝,a2, a3類推const auto [b1, b2, b3] (priArr); // b1 是 priArr[0] 的只讀拷貝,b2, b3類推auto &[c1, c2, c3] {priArr}; // c1 是 priArr[0] 的引用,c2, c3類推c3 = 14;                     // priArr[2]的值變為14return 0;
}

2、用于std::array的結構化綁定聲明

若初始化表達式為數組類型,則標識符列表中的名字綁定到數組元素

  1.   標識符數量必須等于std::array數組中的元素數量 
    
  2.  標識符類型與std::array中的數組元素類型一致
    
int main() {// std::array stdArr = {'a','b','c'}; 	c++17std::array<char,3> stdArr = {'a','b','c'};auto [d1, d2, d3] {stdArr}; return 0;
}

3、用于對象數據成員的結構化綁定聲明

若初始化表達式為類/結構體類型,則標識符列表中的名字綁定到類/結構體的非靜態數據成員上。

  1.   數據成員必須為公有成員 
    
  2.   標識符數量必須等于數據成員的數量 
    
  3.   標識符類型與數據成員類型一致
    
class C {  // 可以改用 struct C,然后去掉下面的public屬性說明
public:int i { 420 }; // 就地初始化char ca[ 3 ] { 'O', 'K', '!' };
};
int main() {C c;auto [a1, a2] {c}; // a1是int類型,a2是char[]類型std::cout << "c.i:" << a1 << " c.ca:" << b2 << std::endl;
}

auto后跟&,則標識符是數據成員的引用。
auto前可放置const,表明標識符是只讀的。

int main() {C c; // c.i: 420;  c.ca: 'O','K','!'auto [a1, a2] {c}; // a1是c.i的拷貝,a2是char[]類型auto& [b1, b2] {c}; // b1是int&類型,是c.i的引用,// b2是char(&)[3]類型(數組的引用),是c.ca的引用a1 = 100;std::cout << "c.i:" << c.i << std::endl; // 輸出420,改a1不影響c.ib1 = 200;std::cout << "c.i:" << c.i << std::endl; // 輸出200,通過b1修改了c.i}

注意:C++中對class中的兩個數據類型沒有private、public聲明,則認為是私有的。
例如下面的代碼就是錯誤的,因為兩個變量是私有的。

class C{int a{0};int b{1};
};
int main() {C c;auto [ x, y] {c};
}

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

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

相關文章

URAL 1106 Two Teams (DFS)

題意 小組里有N個人&#xff0c;每個人都有一個或多個朋友在小組里。將小組分成兩個隊伍&#xff0c;每個隊伍的任意一個成員都有至少一個朋友在另一個隊伍。 思路 一開始覺得和前幾天做過的一道2-sat&#xff08;每個隊伍任意兩個成員都必須互相認識&#xff09;相似然后就往那…

七、邏輯回歸項目實戰---音樂分類器

一、項目需求 訓練集數據為六類音樂([“classical”, “jazz”, “country”, “pop”, “rock”, “metal”])&#xff0c;格式為.wav&#xff0c;每類音樂都有100首 音樂分類器項目&#xff0c;主要運用到了傅里葉變換函數 很多東西越在高維空間處理起來就會變得越是簡單 例…

仿京東左側欄目導航

效果圖&#xff1a; 查看效果&#xff1a;http://www.miiceic.org.cn/eg/eg10/abzc.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http:…

python創建矩陣_在Python中創建矩陣的Python程序

python創建矩陣There is no specific data type in Python to create a matrix, we can use list of list to create a matrix. Python中沒有特定的數據類型來創建矩陣&#xff0c;我們可以使用list列表來創建矩陣 。 Consider the below example, 考慮下面的示例&#xff0c;…

函數定義

//表達式定義函數 var squarefunction(x){return x*x;}//只有變量聲明(var square;)提前了&#xff0c;初始化代碼仍然在原處。 //函數聲明語句 function f(x){return x*x;}//整個函數體被顯式的“提前”到了腳本或函數的頂部。 //因此他們在整個腳本和函數內都是可見的。此種方…

leetcode 491. 遞增子序列 思考分析

題目 給定一個整型數組, 你的任務是找到所有該數組的遞增子序列&#xff0c;遞增子序列的長度至少是2。 說明: 給定數組的長度不會超過15。 數組中的整數范圍是 [-100,100]。 給定數組中可能包含重復數字&#xff0c;相等的數字應該被視為遞增的一種情況。 思考 這一題和le…

八、神經網絡

一、為啥要有神經網絡&#xff1f; 在前面的幾篇博客中&#xff0c;很容易知道我們處理的都是線性的數據&#xff0c;例如&#xff1a;線性回歸和邏輯回歸&#xff0c;都是線性的算法 但是&#xff0c;實際上日常生活中所遇到的數據或者問題絕大多數還是非線性的 一般面對非線…

scale up 和 scale out

目前在調研sheepdog的時候&#xff0c;看到scale up和scale out的術語&#xff0c;理解了一下&#xff1a; 這兩個詞匯均是存儲系統方面的概念 scale up: 縱向擴展 購買更大的存儲&#xff0c;遷移原有數據到大的存儲中 &#xff08;添加新一個新的機器&#xff09; scale out…

icse ccf_ICSE的完整形式是什么?

icse ccfICSE&#xff1a;印度中學教育證書 (ICSE: Indian Certificate of Secondary Education) ICSE is an abbreviation of the Indian Certificate of Secondary Education (ICSE). It is an educational board of the school in India for class 10th which is private an…

Delphi XE2 之 FireMonkey 入門(18) - TLang(多語言切換的實現)

一個小小的 TLang 類, 實現多語言切換, 挺好的. 它的工作思路是:1、首先通過 AddLang(語言代碼) 添加語言類別, 如: AddLang(en)、AddLang(cn).2、每個語言代碼對應一個 TStrings 列表, 獲取方式如: LangStr[en]、LangStr[cn].3、可以手動填充這些數據、可以通過 LoadFromFile(…

leetcode 46. 全排列 思考分析

目錄1、題目2、思考3、優化1、題目 給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 2、思考 老規矩&#xff0c;先畫出給出的例子的解空間樹&#xff1a; 觀察我們可以發現&#xff1a; 1、深度向下一層深入時&#xff0c;出現過的元素不能再出現&…

Arduino UNO R3開發板+MQ-2煙霧濃度傳感器+火焰傳感器+舵機+無源蜂鳴器+風扇+步進電機+WIFI模塊+RGB三色LED燈+SIM900A所構成的室內安全報警模塊

該系統模塊主要由Arduino UNO R3開發板MQ-2煙霧濃度傳感器火焰傳感器舵機無源蜂鳴器風扇步進電機WIFI模塊RGB三色LED燈SIM900A所組成&#xff0c;MQ-2煙霧濃度傳感器達到不同的閾值的時候&#xff0c;LED燈會通過不同的顏色來進行警示。煙霧濃度增大&#xff0c;LED燈依次顯示綠…

highcharts中series帶參數的賦值問題

需要得到的代碼如下&#xff1a; series: [{name: 棒號1,data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]}, {name: 棒號2,data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]}, {name: 棒號3,data: [-0.9, 0.6, 3.5, …

可編程ic卡 通用嗎_8255可編程IC

可編程ic卡 通用嗎Introduction 介紹 An 8255 programmable integrated circuit (IC) is an IC used for interfacing the microprocessor with the peripheral devices. It is a 40 pin IC which was introduced by INTEL to use with its 8085 and 8086 microprocessors. 82…

POJ 1944 Fiber Communications (枚舉 + 并查集 OR 線段樹)

題意 在一個有N&#xff08;1 ≤ N ≤ 1,000&#xff09;個點環形圖上有P&#xff08;1 ≤ P ≤ 10,000&#xff09;對點需要連接。連接只能連接環上相鄰的點。問至少需要連接幾條邊。 思路 突破點在于最后的結果一定不是一個環&#xff01;所以我們枚舉斷邊&#xff0c;則對于…

九、邏輯回歸多分類和softmax多分類

一、邏輯回歸多分類 假設激活函數使用的是sigmoid函數 邏輯回歸多分類其實是多個二分類而已&#xff0c;若求三分類問題需要對訓練的數據樣本進行適當的修改調整即可&#xff0c;如何修改樣本數據可以參考邏輯回歸二分類和多分類本質區別&#xff0c;內容都一樣&#xff0c…

【C++grammar】繼承與構造test1代碼附錄

目錄1、main.cpp2、circle.cpp3、circle.h4、rectangle.cpp5、rectangle.h6、Shape.h1、main.cpp #include <iostream> #include <string> #include "Shape.h" #include "circle.h" #include "rectangle.h"//創建Shape/Circle/Rect…

hdu 4747 mex 線段樹+思維

http://acm.hdu.edu.cn/showproblem.php?pid4747 題意&#xff1a; 我們定義mex(l,r)表示一個序列a[l]....a[r]中沒有出現過得最小的非負整數&#xff0c; 然后我們給出一個長度為n的序列&#xff0c;求他所有的連續的子序列的mex(l,r)的和。 思路&#xff1a; 首先因為n的最大…

十、評估指標

我看過很多課程&#xff0c;不過內容都大差不差&#xff0c;也可以參考這篇模型評估方法 一、K折交叉驗證 一般情況&#xff0c;我們得到一份數據集&#xff0c;會分為兩類&#xff0c;一類是trainset訓練集&#xff0c;另一類十testset測試集。通俗一點也就是訓練集相當于平…

leetcode 47. 全排列 II 思考分析

題目 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 思考分析以及代碼 這一題和前面的做過的兩個題目有所關聯&#xff1a; leetcode 46. 全排列 思考分析 再加上leetcode 491. 遞增子序列 思考分析類似的去重操作。 先畫出解空間樹…