C++ pair(对组)用法

匿名 (未验证) 提交于 2019-12-03 00:13:02

 

 

 

 

 

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的公有数据成员

 

 

 

 

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);    // 拷贝构造初始化

 

 

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 =

 

 

 

pair<int ,double> p1;

p1.first = 1;

p1.second = 2.5;

cout<<p1.first<<' '<<p1.second<<endl;

 

 

string firstBook;

if(author.first=="James" && author.second=="Joy")

    firstBook="Stephen Hero";

 

 

 

 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

 

 

 

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;

}

 

 

 

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的公有数据成员

 

 

 

 

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);    // 拷贝构造初始化

 

 

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 =

 

 

 

pair<int ,double> p1;

p1.first = 1;

p1.second = 2.5;

cout<<p1.first<<' '<<p1.second<<endl;

 

 

string firstBook;

if(author.first=="James" && author.second=="Joy")

    firstBook="Stephen Hero";

 

 

 

 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

 

 

 

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;

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!