- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用可变参数模板,因为我正在尝试为我正在开发的项目使用可变参数类模板。我希望该类接受一个整数列表,这些整数将用于创建该类的其他元素。最初,我使用模板构造函数来获取整数数组。但是,我在链接代码时遇到了问题。我想出了另一种解决问题的方法,使用可变参数类模板来获取整数列表,但我很好奇这段代码是否被认为是糟糕的 C++(我已经有一段时间没有编写 C++ 了,这感觉很老套)。无论如何,这是我编写的测试代码,它可以按预期编译并工作:
template<int...structure>
class testClass{
public:
testClass(){
std::size_t size = sizeof...(structure);
std::cout << size << '\n';
int arr[]{ structure... };
for (int i = 0; i < size; i++)
std::cout << arr[i] << '\n';
}
};
int main() {
testClass<1, 2, 3> c;
}
正如预期的那样,代码输出:
3
1
2
3
这个解决方案有什么问题吗?我一直在网上搜索,似乎没有人以这种方式使用可变参数模板。
预先感谢您的意见。
最佳答案
您的解决方案没有任何问题或黑客行为,这只是一种权衡。使用您的解决方案,您可以立即初始化阵列,使其具有最佳性能。随着std::initializer_list
解决方案他们必须默认数组的成员,然后复制,这是更多的工作。
另一方面,这意味着您只能在编译时构造对象,而 std::initializer_list
版本可以在运行时初始化。
另一个问题是将它们存储在容器中。您不能存储不同的testClass
位于 std::vector
因为不同的模板参数意味着它们是不同的类型,并且 vector 仅存储单个元素类型。如果您采取了 std::initializer_list
然后testClass
不会是模板,您可以将不同的模板存储在同一个 vector
中.
关于c++ - 在 C++ 中,使用参数包作为初始化列表是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312668/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!