Как правильно передать размер вектора функции, требующей int?

Я использую библиотеку с функцией, которая имеет параметр типа int,

Мне нужно передать размер вектора в качестве аргумента для этого параметра.

Я знаю, что могу получить размер вектора, используя someVector.size(), но это возвращает тип size_t,

Я знаю, что могу разыграть size_t для intНапример, static_cast<int>(someVector.size()), Тем не менее, приведение может вызвать проблемы, если someVector.size() превышает максимальное значение int,

Как правильно передать размер вектора функции, для которой требуется параметр типа int?

1

Решение

Там нет «безопасный» способ пройти std::size_t к функции, принимающей int (всякий раз, когда size_t больше максимального представимого int ты в беде). Однако вы можете проверить, безопасен ли проход:

if(v.size() < std::numeric_limits<int>::max()) // need to #include <limits>
{
// safe to pass
}
else
{
// not safe, throw error/exit/print something
}

Сравнение всегда безопасно при условии int положительно.

2

Другие решения

Я бы посмотрел документацию библиотеки для решений, они могут принимать значения типа unsigned int который очень похож на size_t, Вот еще один пост, который может помочь: без знака int против size_t.

0

По вопросам рекламы [email protected]