标准库中有一些函数,例如std::map::insert
,它们返回std::pair
。有时,将两个不同的变量填充对应于该对的一半将是方便的。有没有一种简单的方法可以做到这一点?
std::map<int,int>::iterator it;
bool b;
magic(it, b) = mymap.insert(std::make_pair(42, 1));
我在这里寻找magic
。
答案 0 :(得分:27)
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));