Дело в том, что если вы не хотите, чтобы существующие приложения ломались, вы не можете требовать, чтобы они изменили свой код.Если вам нужны 64-битные целые числа в вашем API для внутреннего использования, вы можете просто привести элементы (или скопировать входные векторы), но поскольку переданные параметры, скорее всего, являются 32-битными целыми числами, дополнительную информацию, которую может хранить long long
там нет в любом случае.Если вы хотите эффективно передать 64-битные данные, код клиента должен измениться.
РЕДАКТИРОВАТЬ: Если более новые реализации должны иметь возможность использовать long long
, то я предлагаю перегрузку вбыть вашим лучшим вариантом.Приведение к vector<int>
приведет к потере информации, а изменение сигнатуры единственного метода приведет к поломке текущих клиентов.Когда кто-то вызывает старый вариант, вы можете привести отдельные элементы к long long
.Если вы хотите сохранить весь вектор, просто скопируйте его.
Я также предлагаю передавать вектор по (const) ссылке, вы можете избежать ненужной копии возможных больших данных, и это не сломает клиентов, так каксинтаксис вызова остается прежним.