热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用函数的输出初始化const数组结构字段?

我有一个包含const数组的结构,并想在构造时将其初始化为特定值。不幸的是,它

我有一个包含const数组的结构,并想在构造时将其初始化为特定值。不幸的是,它的内容取决于几个作为参数传递给构造函数的参数,并且需要一个函数来计算数组的内容。

我理想地想要做的事情看起来像这样:

d3.select("#my_dataviz")
.transition()
.duration(1000)
.style(???);

当然,这里有几个问题(无法从函数返回数组,数据类型不匹配等)。但是,有什么办法可能

我已经看到其他类似的问题,建议为此使用std :: vector,但是这种堆分配是我的性能预算无法承受的。


按照内森(Nathan)的建议,应使用std::array更改原始数组。这样,您仍然可以从堆栈分配中受益,但是现在您可以从副本进行初始化。

using MyArray = std::array;
const MyArray listOfValues;
MyArray processParameters(unsigned int parameter) {
MyArray arrayValues;
for(int i = 0; i <32; i++) {
arrayValues[i] = i * parameter;
}
return arrayValues;
}

我从数组数据类型中删除了const,因为它不是必需的,因为您的数组已经是const了,而且使用const unsigned int,您将无法在运行时设置arrayValues的值。

,

这符合您的目的吗?我看不到堆分配。

struct SomeType {
const unsigned int *listOfValues;
const unsigned int * processParameters(unsigned int parameter) {
for(int i = 0; i <32; i++) {
_listOfValues[i] = i * parameter;
}
return _listOfValues;
}
SomeType(unsigned int parameter) :
listOfValues(processParameters(parameter))
{
}
private:
unsigned int _listOfValues[32];
};

推荐阅读
author-avatar
鬼蕾12_950_709
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有