В С ++ мы обычно используем memset
установить все элементы на ноль, например:
int a[5][5];
memset(a,0,sizeof(a));
Что если я хочу установить все элементы int на 1?
memset(a, 1, sizeof(a));
не работает, так как я не могу просто установить все байты 1.
Интересно, есть ли подобная функция как memset
установить все elements
(НЕ ПРОСТО БАЙТЫ) к конкретному value
,
С помощью 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);
Других решений пока нет …