Stack Overflow на русском Asked by Pcoder on August 30, 2021
Недавно наткнулся на проблему в c++. Есть переменная int mx и есть сет set vals, надо переменной mx передать значение max(mx, vals.size()), но max ломается. Подскажите как засолвить проблему пожалуйста.
int mx = 0;
set <int> vals;
mx = max(vals.size(), mx);
Надо перевести mx
в тип std::size_t
либо изначально его таким создать.
std::max(vals.size(), static_cast<std::size_t>(mx));
Answered by user398400 on August 30, 2021
Дело в том, что max
- это шаблон функции. Давайте посмотрим на обьявление этого шаблона:
template< class T >
constexpr const T& max( const T& a, const T& b );
Как видно, два аргумента имеют одинаковый тип. Теперь посмотрим на Ваш вызов max
:
max(vals.size(), mx);
Так в чём проблема? Проблема в том, что vals.size()
возвращает значение, которое имеет тип size_t
. А mx
имеет тип int
. Получается, что типы разные и компилятор не может определить нужный тип. Поэтому нужно явно указать какой тип использовать. Для этого просто укажите необходимый тип в угловых скобках после имени функции. Вот так:
max<int>(vals.size(), mx);
Answered by EOF on August 30, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP