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

Mar*_*som 19 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));
Run Code Online (Sandbox Code Playgroud)

我在找magic这里.

Tim*_*lds 28

std::tie从<tuple>标题是你想要的.

std::tie(it, b) = mymap.insert(std::make_pair(42, 1));
Run Code Online (Sandbox Code Playgroud)

" magic":)

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


Chr*_*ris 8

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

auto [it, b] = mymap.insert(std::make_pair(42, 1));
Run Code Online (Sandbox Code Playgroud)