Установите для элементов 2D массива int значение 1 с помощью функции memset

В С ++ мы обычно используем memset установить все элементы на ноль, например:

int a[5][5];
memset(a,0,sizeof(a));

Что если я хочу установить все элементы int на 1?

memset(a, 1, sizeof(a));

не работает, так как я не могу просто установить все байты 1.

Интересно, есть ли подобная функция как memset установить все elements(НЕ ПРОСТО БАЙТЫ) к конкретному value,

1

Решение

С помощью std::fill будет работать, но вы должны прибегнуть к использованию reinterpret_cast<>, который часто считается плохой формой:

#include <algorithm>

int a[5][5];
std::fill(reinterpret_cast<int*>(a),
reinterpret_cast<int*>(a)+(5*5),
1);

В качестве альтернативы, вы можете взять адрес первого элемента, который тоже неуклюжий:

std::fill(&a[0][0],&a[0][0]+(5*5),1);
1

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

Других решений пока нет …

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