首先让我告诉你,我研究过C和C ++,但我对OOP的了解非常有限。 我基本上希望只要我创建一个类输出对象,我的整个数组就会被初始化为空格(char no.32)。 MAXROWS和MAXCOLS定义为const int,目前为25和80,但我可以更改它们。
@Bean
public static Map<String, Object> allProperties() {
Map<String, Object> rtn = new HashMap<>();
if (env instanceof ConfigurableEnvironment) {
for (PropertySource<?> propertySource : ((ConfigurableEnvironment) env).getPropertySources()) {
if (propertySource instanceof EnumerablePropertySource) {
for (String key : ((EnumerablePropertySource) propertySource).getPropertyNames()) {
rtn.put(key, propertySource.getProperty(key));
}
}
}
}
return rtn;
}
答案 0 :(得分:1)
class output {
//...
output() {
memset( &outpt[0][0], ' ', sizeof(char) * MAXROWS * MAXCOLS );
}
}
这将从输出[0] [0]的地址开始将(MAXROWS * MAXCOLS)个字符设置为&#39;的值。 &#39; (32)。由于您将每个元素设置为相同的值,因此这是一种快速的方法。
您可以在构造函数中清除数组,对于初学者。
答案 1 :(得分:1)
要初始化一个类,必须使用所谓的构造函数。例如像这样
#include <cassert>
#include <algorithm>
const std::ptrdiff_t max_rows;
const std::ptrdiff_t max_cols;
class output {
private:
char data_[max_rows][max_cols];
public:
output()
{
assert(max_rows > 0 && max_cols > 0);
std::fill_n(&data_[0][0], max_rows*max_cols, ' ');
}
void print() { /* your output */ }
};
对于此维度尺寸处理,使用boost::multi_array
容器或std::array
会更好。这些C风格的数组非常容易出错。即使这样也可以更安全
class output {
private:
std::array<char,max_rows*max_cols> data_;
public:
output()
{
for (char& x : data_) // can not be out of bounds
x = ' ';
// std::fill(data_.begin(), data_.end(), ' ');
}
void print() { /* your output */ }
};