pair和typedef

文章目錄

  • 一、pair用法
    • 1.2、pair的創建和初始化
    • 1.3、pair對象的操作
    • 1.4、(make_pair)生成新的pair對象
    • 1.5、通過tie獲取pair元素值
  • 2、typedef
    • 2.1、什么是typedef
    • 2.2、typedef用法
      • 2.2.1、對于數據類型使用例如:
      • 2.2.2、對于指針的使用例如
      • 2.2.3、對于結構體的使用
    • 2.3、進階typedef
      • 2.3.1、數組指針
      • 3.1.2、指針函數
      • 3.1.3、Typedef與define

參考連接:原文鏈接: https://blog.csdn.net/sevenjoin/article/details/81937695

一、pair用法

pair是將2個數據組合成一組數據的一種數據類型,pair是通過struct結構體實現的其標準庫類型--pair類型定義在#include <utility>頭文件中

  • 類模板:template<class T1,class T2> struct pair
  • 參數:T1是第一個值的數據類型,T2是第二個值的數據類型。
  • 功能:將一對值合在一起,比如二維坐標(x,y),當然可以用結構體實現,但是使用pair有它的簡潔之處。兩個值分別通過 .first 和 .second 來訪問。
pair<T1, T2> p1;            //創建一個空的pair對象(使用默認構造),它的兩個元素分別是T1和T2類型,采用值初始化。
pair<T1, T2> p1(v1, v2);    //創建一個pair對象,它的兩個元素分別是T1和T2類型,其中first成員初始化為v1,second成員初始化為v2。
make_pair(v1, v2);          // 以v1和v2的值創建一個新的pair對象,其元素類型分別是v1和v2的類型。
p1 < p2;                   // 兩個pair對象間的小于運算,其定義遵循字典次序:如 p1.first < p2.first 或者 !(p2.first < p1.first) && (p1.second < p2.second) 則返回true。
p1 == p2;                 // 如果兩個對象的first和second依次相等,則這兩個對象相等;該運算使用元素的==操作符。
p1.first;                  // 返回對象p1中名為first的公有數據成員
p1.second;                 // 返回對象p1中名為second的公有數據成員
p1 = p2;                  // pair變量間賦值

1.2、pair的創建和初始化

pair包含兩個數值,與容器一樣,pair也是一種模板類型。但是又與之前介紹的容器不同;

在創建pair對象時,必須提供兩個類型名,兩個對應的類型名的類型不必相同

pair<string, string> anon;        // 創建一個空對象anon,兩個元素類型都是string
pair<string, int> word_count;     // 創建一個空對象 word_count, 兩個元素類型分別是string和int類型
pair<string, vector<int> > line;  // 創建一個空對象line,兩個元素類型分別是string和vector類型

當然也可以在定義時進行成員初始化:

pair<string, string> author("James","Joy");    // 創建一個author對象,兩個元素類型分別為string類型,并默認初始值為James和Joy。
pair<string, int> name_age("Tom", "18");
pair<string, int> name_age2(name_age);    // 拷貝構造初始化

pair類型的使用相當的繁瑣,如果定義多個相同的pair類型對象,可以使用typedef簡化聲明:

typedef pair<string,string> Author;
Author proust("March","Proust");
Author Joy("James","Joy");

變量間賦值:

pair<int, double> p1(1, 1.2);
pair<int, double> p2 = p1;     //operator =

1.3、pair對象的操作

訪問兩個元素操作可以通過first和sencond訪問:

pair<int ,double> p1;p1.first = 1;p1.second = 2.5;cout<<p1.first<<' '<<p1.second<<endl;//輸出結果:1 2.5string firstBook;
if(author.first=="James" && author.second=="Joy")firstBook="Stephen Hero";

1.4、(make_pair)生成新的pair對象

還可以利用make_pair創建新的pair對象:

 pair<int, double> p1;p1 = make_pair(1, 1.2);cout << p1.first << p1.second << endl;//output: 1 1.2int a = 8;string m = "James";pair<int, string> newone;newone = make_pair(a, m);
cout << newone.first << newone.second << endl;//output: 8 James

1.5、通過tie獲取pair元素值

在某些清況函數會以pair對象作為返回值時,可以直接通過std::tie進行接收。比如:

std::pair<std::string, int> getPreson() {return std::make_pair("Sven", 25);
}int main(int argc, char **argv) {std::string name;int ages;std::tie(name, ages) = getPreson();std::cout << "name: " << name << ", ages: " << ages << std::endl;return 0;
}

2、typedef

2.1、什么是typedef

typedef是在C和C++編程語言中的一個關鍵字。作用是為現有的數據類型(int、float、char……)創建一個新的名字,目的是為了使代碼方便閱讀和理解。

2.2、typedef用法

2.2.1、對于數據類型使用例如:

typedef  int   NEW_INT;

以上就是給int起了一個新的名字NEW_INT,注意要加分號。當要定義int類型數據時就可以:

NEW_INT num;

此時NEW_INT num 等同于 int num

2.2.2、對于指針的使用例如

typedef  int   *PTRINT;

以上就是給int *起了一個新的名字NEW_INT。可定義int類型指針變量如:

PTRINT x;

此時PTRINT x等同于int *x
例:
在這里插入圖片描述
在這里插入圖片描述

2.2.3、對于結構體的使用

在聲明結構體時可為結構體和結構體指針起別名,如:

typedef struct NUM
{int a;int b;
}DATA,*PTRDATA;

此時DATA等同于struct NUM,*PTRDATA等同于struct NUM *。

定義結構體變量及指針可簡化為:

   DATA data;           //定義結構體變量PTRDATA pdata;   //定義結構體指針

舉例:

#include <stdio.h>typedef struct NUM
{int a;int b;
}DATA,*PTRDATA;int main()
{DATA data;           //定義結構體變量PTRDATA pdata;   //定義結構體指針pdata=&data;      //結構體指針指向結構體變量      data.a=100;data.b=500;printf("a=%d\nb=%d\n",data.a,data.b);printf("a=%d\nb=%d\n",pdata->a,pdata->b);return 0;
}

OUT:
在這里插入圖片描述

2.3、進階typedef

2.3.1、數組指針

int (*ptr)[3];

使用Typedef:

typedef int (*PTR_TO_ARRAY)[3];

例:

#include <stdio.h>typedef int (*PTR_TO_ARRAY)[3];int main()
{Int I;Int temp[3]={1,2,3};PTR_TO_ARRAY ptr_to_array;ptr_to_array = &temp;for(i+0;i<3;i++){printf("%d\n",(*ptr_to_array)[i]);}return 0;
}

3.1.2、指針函數

int (*fun)(void);

使用Typedef:

typedef int (*PTR_TO_FUN)(void);

3.1.3、Typedef與define

Typedef是起別名,define是替換。
例如:

typedef int *PTR;PTR a,b;

此時a,b都是指針變量。

#define PTR int*PTR a,b;

此時等同于

int *a,b;

只有a為指針變量,而b為整型變量。

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

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

相關文章

java springboot測試類虛擬MVC環境 匹配返回值與預期內容是否相同 (JSON數據格式) 版

上文java springboot測試類鑒定虛擬MVC請求 返回內容與預期值是否相同我們講了測試類中 虛擬MVC發送請求 匹配返回內容是否與預期值相同 但是 讓我意外的是 既然沒人罵我 因為我們實際開發 返回的基本都是json數據 字符串的接口場景是少數的 我們在java文件目錄下創建一個 dom…

2023年10月紙巾市場分析(京東天貓淘寶平臺紙巾品類數據采集)

雙十一大促期間&#xff0c;剛需品的紙巾是必囤商品之一。今年雙十一&#xff0c;京東數據顯示&#xff0c;10月23日至29日&#xff0c;清潔紙品成交額同比增長40%&#xff0c;由此也拉動了10月紙巾市場的銷售。 鯨參謀數據顯示&#xff0c;今年10月&#xff0c;京東平臺紙巾市…

【日常總結】如何禁止瀏覽器 http自動跳轉成https

一、場景 二、問題 三、解決方案 3.1 chrome 瀏覽器 3.2 edge 瀏覽器&#xff1a; 3.3 Safari 瀏覽器 3.4 Firefox 瀏覽器 3.5 Microsoft Edge 一、場景 公司網站 http:// 谷歌瀏覽器中自動轉換成 https:// 導致無法訪問 二、問題 nginx配置ssl 443接口&#xff0c; ht…

SOLIDWORKS 2024新功能之Electrical篇

SOLIDWORKS 2024 Electrical篇目錄概覽 ? 對齊零部件 ? 更改多個導軌和線槽的長度 ? 過濾輔助和附件零件 ? 2D 機柜中的自動零件序號 ? 移除制造商零件數據 ? 重置未定義的宏變量 ? 使用范圍縮短列表 ? SOLIDWORKS Electrical Schematic 增強功能 1、對齊零部件…

ONNX實踐系列-修改yolov5-seg的proto分支輸出shape

一、目標 本文主要介紹要將原始yolov5分割的輸出掩膜從[b,c,h,.w]修改為[b, h, w, c] 原來的: 目標的: 代碼如下: Descripttion: version: @Company: WT-XM Author: yang jinyi Date: 2023-09-08 11:26:28 LastEditors: yang jinyi LastEditTime: 2023-09-08 11:48:01 …

Threejs_14 制作圣誕賀卡

繼續跟著老陳打碼學習&#xff01;&#xff01;&#xff01;支持&#xff01;&#xff01;&#xff01; 效果圖 鏈接&#xff1a;https://pan.baidu.com/s/1Ft8U2HTeqmpyAeesL31iUg 提取碼&#xff1a;6666 使用到的 模型文件和資源等都為老陳打碼提供&#xff01;&#x…

【騰訊云云上實驗室】探索保護數據之盾背后的安全監控機制

當今數字化時代&#xff0c;數據安全成為了企業和個人最為關注的重要議題之一。隨著數據規模的不斷增長和數據應用的廣泛普及&#xff0c;如何保護數據的安全性和隱私性成為了迫切的需求。 今天&#xff0c;我將帶領大家一起探索騰訊云云上實驗室所推出的向量數據庫&#xff0c…

新版PY系列離線燒錄器,支持PY002A/002B/003/030/071等MCU各封裝,不同 FLASH 大小型號

PY系列離線燒錄器&#xff0c;目前支持PY32F002A/002B/002/003/030/071/072/040/403/303 各封裝、不同 FLASH 大小型號。PY離線燒錄器需要搭配上位機軟件使用&#xff0c;上位機軟件可以在芯嶺技術官網上下載&#xff0c;還包括了離線燒錄器的使用說明。PY離線燒錄器使用MINI U…

金融機構如何高效率考勤?這個技巧幫了大忙!

在現代社會&#xff0c;隨著科技的不斷發展&#xff0c;人臉識別技術作為一種高效、便捷的身份驗證手段&#xff0c;逐漸應用于各個領域&#xff0c;其中之一便是人臉考勤系統。 傳統的考勤方式存在一系列問題&#xff0c;如卡片打卡容易被冒用、簽到表容易造假等&#xff0c;而…

CTFUB-web前置技能-HTTP協議

burp抓包,抓第二次的 修改請求方式為CTFHUB

算法筆記:OPTICS 聚類

1 基本介紹 OPTICS(Ordering points to identify the clustering structure)是一基于密度的聚類算法 OPTICS算法是DBSCAN的改進版本 在DBCSAN算法中需要輸入兩個參數&#xff1a; ? 和 MinPts &#xff0c;選擇不同的參數會導致最終聚類的結果千差萬別&#xff0c;因此DBCSAN…

線上PDF文件展示

場景&#xff1a; 請求到的PDF&#xff08;url鏈接&#xff09;&#xff0c;將其展示在頁面上 插件&#xff1a; pdfobject &#xff08;我使用的版本&#xff1a; "pdfobject": "^2.2.12" &#xff09; 下載插件就不多說了&#xff0c;下面將其引入&a…

【Clang Static Analyzer 代碼靜態檢測工具詳細使用教程】

Clang Static Analyzer sudo apt-get install clang-tools scan-build cmake .. scan-build make -j4 編譯完成之后會在終端提示在哪里查看報錯文檔: scan-build: 55 bugs found. scan-build: Run scan-view /tmp/scan-build-2023-11-24-150637-6472-1 to examine bug report…

Liunx Ubuntu Server 安裝配置 Docker

1. 安裝Docker 1.1 更新軟件包列表 sudo apt update1.2 添加Docker存儲庫 sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-a…

Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)

漏洞描述 Django 于 2021年7月1日發布了一個安全更新&#xff0c;修復了函數QuerySet.order_by中的 SQL 注入漏洞。 參考鏈接&#xff1a; Django security releases issued: 3.2.5 and 3.1.13 | Weblog | Django 該漏洞需要開發人員使用order_by功能。此外&#xff0c;還可…

加入華為云鯤鵬極簡開發創造營,激活創造力,探索無限可能!

數字經濟時代&#xff0c;速度、效率、質量安全已成為各行業告訴拓新發展的關鍵&#xff0c;華為云不斷打磨敏捷安全開發的軟件平臺&#xff0c;為更高效率的生產力變革積蓄能量。 在剛剛過去不久的2023華為全聯接大會上&#xff0c;華為最新發布了華為云CodeArts與鯤鵬DevKit…

關于配置文件中秘鑰信息加密實現方案的一些思考

關于配置文件中秘鑰信息加密實現方案的一些思考 背景實現方案 背景 配置信息文件中(代碼中), 不應該有明文的秘鑰信息. 需要找一種方案去做加密處理. 實現方案 我們可以在項目指定目錄上傳一份加密/解密程序, 例如: jasypt-gui.jar. 啟動時: 配置JVM參數, 對加密的信息進行解…

2023 Unite 大會關于“Muse“ AI 大模型訓練

Unity Muse 借助強大的 AI 能力幫助你探索、構思和迭代&#xff0c;其中包括紋理和精靈兩項功能&#xff0c;可將自然語言和視覺輸入轉化為可用資產。 將 AI 引入 Unity Editor 中的 Muse 提供了更快將想法轉化為實物的選項。您可以調整并使用文本提示、圖案、顏色和草圖&…

周總結2023-11-24

文章目錄 前言&#xff1a;工作&#xff1a;學習&#xff1a;生活&#xff1a; 前言&#xff1a; 保持激情&#xff0c;日日向上&#xff0c;激發內驅力。 工作&#xff1a; 1117上周未完成的計劃&#xff1a; 數模轉換模塊的數據處理分析HAL庫的學習IMU知識點匯總 1124本…

【采坑分享】導出文件流responseType:“blob“如何提示報錯信息

目錄 前言&#xff1a; 采坑之路 總結&#xff1a; 前言&#xff1a; 近日&#xff0c;項目中踩了一個坑分享一下經驗&#xff0c;也避免下次遇到方便解決。項目基于vue2axioselement-ui&#xff0c;業務中導出按鈕需要直接下載接口中的文件流。正常是沒有問題&#xff0c;但…