如何将std :: pair视为两个独立的变量?

时间:2014-03-19 23:12:12

标签: c++ c++-standard-library

标准库中有一些函数,例如std::map::insert,它们返回std::pair。有时,将两个不同的变量填充对应于该对的一半将是方便的。有没有一种简单的方法可以做到这一点?

std::map<int,int>::iterator it;
bool b;
magic(it, b) = mymap.insert(std::make_pair(42, 1));

我在这里寻找magic

3 个答案:

答案 0 :(得分:27)

<{1}}标题中的

std::tie就是你想要的。

<tuple>

&#34; std::tie(it, b) = mymap.insert(std::make_pair(42, 1)); &#34; :)

注意:这是C ++ 11的一项功能。

答案 1 :(得分:0)

在C ++ 03中,你必须这样写:

std::pair< map<int, int>::iterator, bool > res = mymap.insert(std::make_pair(42, 1));

答案 2 :(得分:0)

在C ++ 17中,可以使用结构化绑定。 因此,您不必先声明变量:

auto [it, b] = mymap.insert(std::make_pair(42, 1));