map<int,int> a;
pair<std::map<int,int>::iterator ,bool> f;
f=(a.insert({0,0}));
cout<<f.second;
Почему выдает 1?
Он всегда выводит 1 для любых значений в паре
std::cout << true;
печатает 1 (в большинстве систем)
Пожалуйста, научитесь проверять документацию, там это описано! Чтение документации — один из самых важных навыков в разработке кода.
@Caleth это настраивается, см. std::boolalpha.
Это потому, что 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>.
Если вы попытаетесь вставить один и тот же элемент дважды, будет 0. godbolt.org/z/xbree4q6q