我知道这是一个非常古老的辩论,在世界各地已经讨论过很多次。但是我目前在决定在特定情况下应该在静态数组和动态数组之间使用哪种方法而不是另一种方法时遇到了麻烦。实际上,我不会使用 C++11,我会使用静态数组。但我现在很困惑,因为两者可能有同等的好处。
第一个解决方案:
template<size_t N>
class Foo
{
private:
int array[N];
public:
// Some functions
}
第二种解决方案:
template<size_t N>
class Foo
{
private:
int* array;
public:
// Some functions
}
我不能碰巧选择,因为两者各有优势:
- 静态数组更快,我们根本不关心内存管理。
- 只要未分配内存,动态数组就不会加权。在那之后,它们不像静态数组那样好用。但是从 C++11 开始,我们可以从移动语义中获得很大的好处,而我们不能将其用于静态数组。
我不认为有一个好的解决方案,但我想得到一些建议,或者只是想知道你对这一切的看法。