STL之pair对组

来源:互联网 发布:windows office 密钥 编辑:程序博客网 时间:2024/04/30 10:47

Pair模版是C++ STL中短小精干的结构体,被定义在<utility>头文件中,把两个值视为一个结构单元,如mapmultimap都利用了很多pair对组模版,即</>为成对元素,另外函数需要返回两个值的时候,也常用pair模版(当然,结构体也一样方便)。

注意:pair被定义为结构体而不是类,这样一来他的成员都是公有属性,可以直接访问和赋值。

Pair的定义:

std::pair<int,std::string> p(3,yaoyao);C++ 所有标准都是定义在std名称空间中的)

这样一来可以通过p.first访问3p.second访问”yaoyao”。

Pair的比较:

两个pair类型的变量也可以进行比较大小,但是他们的比较具有优先性,也就是当firstfirst比较,如果可以比较出结果时,就停止比较,以first比较结果为准,否则才进行second的比较。

例:std::pair<int,std::string> p1(5,”abc”),p2(4.”abc”),p3(5.”abb”);

比较可知 p1>p2  p1<p3  p2<p3. 

当且仅当firstsecond都相等时,他们才相等。

便捷函数make_pair():该函数也可以进行两个成员的代替,好处是不需要指明成员变量类型。使用起来更方便快捷。

例:

pair表示:  std::pair<int,std::string> p(5,”yaoyao”); p插入到容器中insert(p);

make_pair: insert ( make_pair(5,”yaoyao”) );

通过比较可以看到使用make_pair不需要中间变量和类型说明,比较方便。

当然也不是以后都使用make_pair,有些地方需要确切的指明类型,例如对于float3.14make_pair会把它当成double处理。所以某些情况下也会带来一定的麻烦。

Pair运用实例:

因为pair始终与map,所以实例见以后的map,这里只需要明白这个概念就可以了!!