什么是目的std::make_pair
?
为什么不直接std::pair<int, char>(0, 'a')
?
这两种方法有什么区别吗?
发布于 2018-04-16 13:31:03
不同之处在于std::pair
需要指定这两个元素的类型,而std::make_pair
将创建一个具有传递给它的元素类型的对,而不需要告诉它。不管怎么说,我都能从不同的医生那里收集到。
pair <int,int> one;
pair <int,int> two;
one = make_pair (10,20);
two = make_pair (10.5,'A'); // ok: implicit conversion from pair<double,char>
除了它的隐式转换奖励之外,如果没有使用make_你要做的一对
one = pair<int,int>(10,20)
每次你分配给一个人,这会让你很烦人...
发布于 2018-04-16 14:17:34
使用make_pair
并显式调用pair
具有指定类型参数的构造函数。std::make_pair
当类型冗长时,更方便,因为模板方法具有基于给定参数的类型推断。例如,
std::vector< std::pair< std::vector<int>, std::vector<int> > > vecOfPair;
std::vector<int> emptyV;
// shorter
vecOfPair.push_back(std::make_pair(emptyV, emptyV));
// longer
vecOfPair.push_back(std::pair< std::vector<int>, std::vector<int> >(emptyV, emptyV));
https://stackoverflow.com/questions/-100003882
复制相似问题