欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ pair的基本用法總結(jié)整理

 更新時間:2020年07月17日 14:11:00   作者:sevencheng798  
這篇文章主要介紹了C++ pair的基本用法總結(jié)整理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1,pair的應(yīng)用

pair是將2個數(shù)據(jù)組合成一組數(shù)據(jù),當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來保存。另一個應(yīng)用是,當一個函數(shù)需要返回2個數(shù)據(jù)的時候,可以選擇pair。 pair的實現(xiàn)是一個結(jié)構(gòu)體,主要的兩個成員變量是first second 因為是使用struct不是class,所以可以直接使用pair的成員變量。

其標準庫類型--pair類型定義在#include <utility>頭文件中,定義如下:

類模板:template<class T1,class T2> struct pair

參數(shù):T1是第一個值的數(shù)據(jù)類型,T2是第二個值的數(shù)據(jù)類型。

功能:pair將一對值(T1和T2)組合成一個值,

        這一對值可以具有不同的數(shù)據(jù)類型(T1和T2),

        兩個值可以分別用pair的兩個公有函數(shù)first和second訪問。

定義(構(gòu)造函數(shù)):

pair<T1, T2> p1;      //創(chuàng)建一個空的pair對象(使用默認構(gòu)造),它的兩個元素分別是T1和T2類型,采用值初始化。
pair<T1, T2> p1(v1, v2);  //創(chuàng)建一個pair對象,它的兩個元素分別是T1和T2類型,其中first成員初始化為v1,second成員初始化為v2。
make_pair(v1, v2);     // 以v1和v2的值創(chuàng)建一個新的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的公有數(shù)據(jù)成員
p1.second;         // 返回對象p1中名為second的公有數(shù)據(jù)成員

2,pair的創(chuàng)建和初始化

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

在創(chuàng)建pair對象時,必須提供兩個類型名,兩個對應(yīng)的類型名的類型不必相同

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

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

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

pair類型的使用相當?shù)姆爆崳绻x多個相同的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;   // copy construction to initialize object
pair<int, double> p3;
p3 = p1;  // operator =

3,pair對象的操作

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

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

4,生成新的pair對象

還可以利用make_pair創(chuàng)建新的pair對象:

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

5,通過tie獲取pair元素值

在某些清況函數(shù)會以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;
}

到此這篇關(guān)于C++ pair的基本用法總結(jié)整理的文章就介紹到這了,更多相關(guān)C++ pair用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt之實現(xiàn)圓形進度條的示例代碼

    Qt之實現(xiàn)圓形進度條的示例代碼

    在平時做頁面開發(fā)時,有些時候會用到圓形進度條,本文主要介紹了Qt之實現(xiàn)圓形進度條的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C語言實現(xiàn)放煙花的程序

    C語言實現(xiàn)放煙花的程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)放煙花的程序,有音樂播放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 基于C語言實現(xiàn)簡易三子棋游戲

    基于C語言實現(xiàn)簡易三子棋游戲

    這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡易三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>
    2022-01-01
  • C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法

    C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法

    這篇文章主要為大家詳細介紹了C++將音頻PCM數(shù)據(jù)封裝成wav文件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C/C++語言中全局變量重復(fù)定義問題的解決方法

    C/C++語言中全局變量重復(fù)定義問題的解決方法

    這篇文章主要給大家介紹了關(guān)于C/C++語言中全局變量重復(fù)定義問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • 探討C語言的那些小秘密之斷言

    探討C語言的那些小秘密之斷言

    我盡可能的把我所理解的斷言的使用講解清楚,希望我在此所講的斷言能夠?qū)δ阌兴鶐椭屇阋院竽軌蛟诖a中靈活使用斷言
    2013-09-09
  • C語言中用棧+隊列實現(xiàn)隊列中的元素逆置

    C語言中用棧+隊列實現(xiàn)隊列中的元素逆置

    這篇文章主要介紹了C語言中用利用棧和隊列實現(xiàn)隊列中的元素逆置的相關(guān)資料,對正在學習的小伙伴有一定的參考價值,需要的可以參考一下,希望對你有所幫助
    2022-02-02
  • C/C++實現(xiàn)通訊錄管理系統(tǒng)(附源碼)

    C/C++實現(xiàn)通訊錄管理系統(tǒng)(附源碼)

    這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • C++智能指針讀書筆記

    C++智能指針讀書筆記

    本篇隨筆僅作為個人學習《C++ Primer》智能指針一節(jié)后的部分小結(jié),抄書嚴重,伴隨個人理解。主要介紹shared_ptr、make_shared、weak_ptr的用法和聯(lián)系
    2015-11-11

最新評論