C++ pair的使用
-
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。
另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second。
pair包含两个数值,与容器一样,pair也是一种模板类型。
pair<string, int> word_count; // 创建一个空对象 word_count, 两个元素类型分别是string和int类型
pair<string, vector > line; // 创建一个空对象line,两个元素类型分别是string和vector类型 -
还可以利用make_pair创建新的pair对象:
pair<int, double> p1;
p1 = make_pair(1, 1.2);
结构体变量和结构体指针的区别
struct node s;
s.name // 结构变量访问成员的方式
s->name //这样是错误的
struct node* p;
p->name // 结构体指针访问结构体成员的方式
(*p).name // 当然结构体指针也可以使用成员运算符但需要先取值, 但一般人不这样用
-
如:
std::multimap<double, GridNodePtr> openSet; // multimap 多对多映射 需要和 pair 联合使用
openSet.insert( make_pair(neighborPtr -> fScore, neighborPtr)); -
注意: 成员访问 . 和 -> 的运算符 高于 指针访问 * 的运算符
mid_idx = (*openSet.begin()).second->index;
和
mid_idx = (openSet.begin())->second->index; 两者等价