Ответ 1
std::tie
из заголовка <tuple>
- это то, что вы хотите.
std::tie(it, b) = mymap.insert(std::make_pair(42, 1));
"magic
":)
Примечание. Это функция С++ 11.
В стандартной библиотеке есть несколько функций, таких как std::map::insert
, которые возвращают std::pair
. Время от времени было бы удобно, чтобы это заполнило две разные переменные, соответствующие половинам пары. Есть ли простой способ сделать это?
std::map<int,int>::iterator it;
bool b;
magic(it, b) = mymap.insert(std::make_pair(42, 1));
Я ищу здесь magic
.
std::tie
из заголовка <tuple>
- это то, что вы хотите.
std::tie(it, b) = mymap.insert(std::make_pair(42, 1));
"magic
":)
Примечание. Это функция С++ 11.
В С++ 03 вы должны написать вот так:
std::pair< map<int, int>::iterator, bool > res = mymap.insert(std::make_pair(42, 1));
В С++ 17 вы можете использовать структурированные привязки. Поэтому вам не нужно сначала объявлять переменные:
auto [it, b] = mymap.insert(std::make_pair(42, 1));