c++ pair用法

应用

pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。

  • 头文件: #include
  • 类模板:template<class T1,class T2> struct 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); // 拷贝构造初始化

可以使用typedef简化声明:

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

pair对象的操作

访问两个元素操作可以通过first和sencond访问:

pair<int ,double> p1;
p1.first = 1;
p1.second = 2.5;
cout<<p1.first<<' '<<p1.second<<endl;
//输出结果:1 2.5

生成新的pair对象

利用make_pair创建新的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

通过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;
}

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×