soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
如何将数组部分初始化为某个默认值?

我有一个数组(例如unsigned int arr[1000])。

我想将这样的数组元素化..

arr = {4, 10, 34, 45, 6, 67, UINT_MAX, UINT_MAX .. 994 times}

那就是在我分配一些值之前,我希望数组中的默认值为UINT_MAX。

有什么办法吗?

当然for循环总是存在的,但是除此之外。

用途std::fill

unsigned int array[5];std::fill(array, array + 5, UINT_MAX);

std::fill_n

unsigned int array[5];int count = 5; // - number of elements to modifyauto value = UINT_MAX; // - the value to be assigned std::fill_n(array, count, value);

或者,考虑std::array改为使用它是C样式数组的精简包装,其中包含迭代器和size()函数等一些其他功能。而且,它不会自动衰减到指针。

请使用两阶段方法。首先,使用一个初始化器列表,然后用其余的填充std::fill

#include <limits>#include <algorithm>constexpr size_t ArraySize = 1000U;int main() {
int arr[ArraySize] = { 4,10,34,45,6,67 };

std::fill(arr + 6, arr + ArraySize, std::numeric_limits<int>::max());

return 0;}

如果要避免任何隐式或显式的make循环,则可以使用以下内容

#include <utility>#include <array>template<size_t ...ind>std::array<unsigned int, 1000> fun(std::index_sequence<ind...> ) {

return {4, 10, 34, 45, 6, 67,(ind, UINT_MAX)...};}int main(){
auto array = fun(std::make_index_sequence<994>{});}



2023-03-22 10:04:19

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示