Как компилятор записывает значения во второе значение пары в этой конструкции?

map<int,int> a;
pair<std::map<int,int>::iterator ,bool> f;
f=(a.insert({0,0}));
cout<<f.second;

Почему выдает 1?

Он всегда выводит 1 для любых значений в паре

Если вы попытаетесь вставить один и тот же элемент дважды, будет 0. godbolt.org/z/xbree4q6q

Retired Ninja 21.11.2022 15:45
std::cout << true; печатает 1 (в большинстве систем)
Caleth 21.11.2022 15:46

Пожалуйста, научитесь проверять документацию, там это описано! Чтение документации — один из самых важных навыков в разработке кода.

Marek R 21.11.2022 16:09

@Caleth это настраивается, см. std::boolalpha.

Marek R 21.11.2022 16:12
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
4
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что bool f.second сообщает вам, вставил ли insert pair<int,int> на карту. 1 означает, что он его вставил.

Bools обычно печатаются как 0 (false) или 1 (true). Вы можете использовать манипулятор ввода-вывода std::boolalpha, чтобы вместо этого напечатать true или false.

он всегда выводит 1 для любых значений в паре

Нет. Если вы попытаетесь вставить pair со значением ключа, которое уже существует в map<int,int>, оно вернет pair<std::map<int,int>::iterator ,bool>, где bool есть false, а итератор укажет на существующий элемент в map<int,int>.

Другие вопросы по теме