c++結構化綁定


author: hjjdebug
date: 2025年 05月 28日 星期三 15:57:58 CST
descrip: c++結構化綁定:


結構化綁定:
名稱辨析: 名稱叫綁定好還是叫解綁好?
解綁意思是原來是一個整體,現在被分成了若干個部分,所以叫解.
綁定強調的意思是. 被分解的某個變量,綁定到了整體的某個變量上. 做為整體的對象沒有被分解.
按照大家的認識,還是叫結構化綁定比較好.

  1. 目的: 結構化綁定是C++17引入的特性,用于簡化聚合類型的數據解構操作,

  2. 操作對象:結構化綁定允許開發者通過單個聲明(一行代碼)
    將復合數據對象 (如std::tuple、數組、結構體)的成員直接解構至獨立的變量.

  3. 實現原理: 其本質是編譯器自動生成對聚合類型成員的匿名引用或拷貝

結構化綁定主要用于訪問公開成員,要訪問私有成員需要結合其他技術手段

測試代碼:

$ cat main.cpp
#include <iostream>
#include <tuple>
#include <map>
class Point
{
public:Point(int x,int y,int z):_x(x),_y(y),_z(z){}
public:int _x,_y,_z; //如果是私有成員,需要結合其他技術手段
};//結構化綁定實例, 
int main()
{//結構體解構, 用單個的變量綁定到結構的成員變量上.Point p{3, 5, 8};auto [i1, i2, i3] = p;  std::cout << "i1/i2/i3:    " << i1 << ' ' << i2 << ' ' << i3 << '\n';//數組解包, 用單個變量,綁定到數組的元素上.int arr[3] = {10, 20, 30};auto [a, b, c] = arr; std::cout<<"a/b/c:" << a << ' ' << b << ' ' <<c <<'\n';//元組解包, 用單個變量去綁定元組中各個元素std::tuple<int, std::string, float> data{42, "text", 1.2f};auto [num, str, val] = data; std::cout<<"num/str/val:" << num << ' ' << str << ' ' <<val <<'\n';//遍歷關聯容器std::map<std::string, int> m{{"a",1}, {"b",2}};for (const auto& [key, value] : m) {  // 把map容器對象直接解構到鍵值對變量.std::cout << key << ":" << value << "|";}std::cout<<'\n';return 0;
}

執行結果:
$ ./tt
i1/i2/i3: 3 5 8
a/b/c:10 20 30
num/str/val:42 text 1.2
a:1|b:2|

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

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

相關文章

大數據治理:理論、實踐與未來展望(一)

文章目錄 一、大數據治理的定義與重要性&#xff08;一&#xff09;定義&#xff08;二&#xff09;重要性 二、大數據治理的應用場景&#xff08;一&#xff09;金融行業&#xff08;二&#xff09;醫療行業&#xff08;三&#xff09;制造業&#xff08;四&#xff09;零售行…

AI系統化學習月計劃6月計劃

以下是為技術總監設計的 AI系統化學習月計劃&#xff08;每天投入2小時&#xff0c;共30天&#xff09;&#xff0c;結合戰略思維、技術基礎、實戰應用和行業趨勢&#xff0c;幫助您快速掌握AI的核心知識&#xff0c;并轉化為業務決策能力。 第一周&#xff1a;AI基礎與戰略思維…

詳解MySQL調優

目錄 1. SQL 語句優 1.1 避免低效查詢 1.2 索引優化 1.3 分析執行計劃 2. 數據庫配置優化 2.1 核心參數調整 2.2 表結構與存儲引擎 2.3 存儲引擎選擇 3. 事務與鎖優化 3.1 事務控制 3.2 鎖機制優化 3.3 批量操作優化 4. 其他優化手段 4.1 監控與分析工具 4.2 讀寫…

VScode單雙引號、分號格式

1、settings.json中添加&#xff1a; 1 2 3 "prettier.semi": false, // 取消自動加分號 "prettier.singleQuote": true, // 保持單引號&#xff0c;不自動變雙引號 "prettier.trailingComma": "none" // 去掉結尾的逗號 2、如上一步…

自動駕駛規劃控制教程——不確定環境下的決策規劃

引言:駕馭未知——不確定性下的自動駕駛決策挑戰 自動駕駛汽車 (Autonomous Vehicles, AVs) 的愿景是徹底改變交通運輸的面貌,提高道路安全、提升交通效率、改善駕乘體驗。然而,要將這一愿景安全可靠地付諸實踐,自動駕駛系統必須能夠在復雜、動態且充滿不確定性的真實世界…

電纜中性點概念

電纜中性點概念 電纜中性點(也稱“中性點”或“中性線”)是電力系統和電氣設備中一個非常重要的概念,尤其在三相電系統中。下面是對中性點概念的系統性解釋。 1. 基本定義 中性點:三相電纜(A/B/C相)的電壓矢量交匯點,理想情況下三相平衡時該點電壓為零。對于星形(Y形…

MyBatis 動態 SQL 詳解:靈活構建強大查詢

MyBatis 的動態 SQL 功能是其最強大的特性之一&#xff0c;它允許開發者根據不同條件動態生成 SQL 語句&#xff0c;極大地提高了 SQL 的靈活性和復用性。本文將深入探討 MyBatis 的動態 SQL 功能&#xff0c;包括 OGNL 表達式的使用以及各種動態 SQL 元素&#xff08;如 if、c…

嵌入式自學第三十天(5.28)

&#xff08;1&#xff09;多線程資源競爭問題&#xff1a; 互斥&#xff1a;在多線程中對臨界資源的排他性訪問。 解決方案&#xff1a;互斥鎖 mutex互斥鎖在進程pcb塊&#xff0c;ret 為0說明別人在用&#xff0c;1說明空閑。 阻塞鎖 man pthread_mutex_init man pthread_…

【HW系列】—web常規漏洞(SQL注入與XSS)

SQL注入與XSS攻防解析&#xff08;安全防御指南&#xff09; 一、SQL注入基礎&#xff08;防御視角&#xff09; ??1. 簡介?? SQL注入是一種通過構造非預期SQL語句操縱數據庫的攻擊技術。作為開發者&#xff0c;需重點關注輸入驗證與查詢安全&#xff0c;建立全流量監測…

Accelerate 2025北亞巡展正式啟航!AI智御全球·引領安全新時代

近日&#xff0c;網絡安全行業年度盛會Accelerate 2025北亞巡展正式在深圳啟航&#xff01;智庫專家、產業領袖及Fortinet高管、產品技術團隊和300余位行業客戶齊聚一堂&#xff0c;圍繞“AI智御全球引領安全新時代”主題&#xff0c;共同探討AI時代網絡安全新范式。大會聚焦三…

RAG系統構建之嵌入模型性能優化完整指南

導讀&#xff1a;在企業級RAG系統的實際部署中&#xff0c;您是否遇到過這樣的困擾&#xff1a;嵌入計算成本不斷攀升&#xff0c;API調用頻繁觸及限制&#xff0c;而系統響應速度卻始終達不到用戶期望&#xff1f;這些看似分散的問題&#xff0c;實際上都指向同一個技術核心&a…

python 自動生成不同行高的word

python 自動生成不同行高的word # -*- coding: utf-8 -*- from docx import Document from docx.shared import Cm, Pt, Inches from docx.oxml import OxmlElement from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_PARAGRAPHclass DynamicTableGenerator:d…

如何訓練意志力

設定清晰的目標 目標需要是具體的&#xff0c;可實現的&#xff0c;有時間限制的。比如不要說“我要鍛煉”&#xff0c;而是改成“每周跑步3次&#xff0c;每次30分鐘”。 從小事開始 起步通常都是困難的&#xff0c;一開始定一個很大很復雜的任務也超出了自己的能力&#x…

FastAPI 依賴注入

依賴注入常用于以下場景&#xff1a; 共享業務邏輯&#xff08;復用相同的代碼邏輯&#xff09; 共享數據庫連接 實現安全、驗證、角色權限 等…… 上述場景均可以使用依賴注入&#xff0c;將代碼重復最小化。 創建依賴項 依賴項就是一個函數&#xff0c;且可以使用與路…

接口冪等性原理與方案總結

文章目錄 接口冪等概念典型場景核心解決方案一鎖二判三更新 方案選型對比 接口冪等概念 定義&#xff1a;無論調用接口多少次&#xff0c;對系統的影響與單次調用一樣 范疇&#xff1a;在后端開發中&#xff0c;通常更關注寫接口的冪等&#xff0c;因為寫接口才會對系統數據造…

【已解決】windows gitbash 出現CondaError: Run ‘conda init‘ before ‘conda activate‘

在 Git Bash 中執行&#xff1a; source /c/Users/你的用戶名/miniconda3/etc/profile.d/conda.sh # 注意填入你自己的路徑 conda init bash關閉并重新打開 Git Bash 終端。測試激活環境&#xff1a; conda activate your_env_name注意事項 要把上述命令中的 你的用戶名 替…

軟件包管理系統的架構與生態機制

文章目錄 前言一、總結二、如何上傳自己的軟件包 前言 在日常軟件開發中&#xff0c;我們經常使用諸如apt install, pip install, npm install之類的命令&#xff0c;但有一個問題是&#xff0c;這些下載命令是從哪里下載的這些軟件包&#xff0c;以及我們是否能上傳自己的代碼…

Java線程池管理最佳實踐(設計模式)

引言 在多線程編程中&#xff0c;線程池是一種非常重要的資源管理工具。合理使用線程池可以顯著提高系統性能&#xff0c;避免頻繁創建和銷毀線程帶來的開銷。今天&#xff0c;我將為大家深入分析一個實用的ThreadPoolManager實現&#xff0c;它來自com.kingdee.eas.util包&am…

4.8.2 利用Spark SQL計算總分與平均分

在本次實戰中&#xff0c;我們的目標是利用Spark SQL計算學生的總分與平均分。首先&#xff0c;我們準備了包含學生成績的數據文件&#xff0c;并將其上傳至HDFS。接著&#xff0c;通過Spark的交互式編程環境&#xff0c;我們讀取了成績文件并將其轉換為結構化的DataFrame。然后…

HTML 文件路徑完全指南:相對路徑、絕對路徑解析與引用技巧

一、為什么必須學會文件路徑&#xff1f;—— 網頁引用資源的 “地址規則” 在 HTML 中&#xff0c;引用圖片、CSS、JS 等外部文件時&#xff0c;必須通過文件路徑告訴瀏覽器資源的位置。路徑錯誤會導致資源無法加載&#xff08;頁面出現 broken image 圖標或樣式丟失&#xf…