c++ - C++ 对象数据成员的最佳数组类型?

标签 c++ arrays

我最近开始学习 C++(已经有很多 C 经验)。

我简要地查看了 vector<..>array<..> .

我想知道 C++ 对象的数据成员的最佳数组类型是什么。请记住我想要封装,所以这个数据成员将是私有(private)的 - 所以我需要它的 getter 和 setter 函数。

我知道数组的长度(长度将保持不变,因此不需要重新分配)。

请问传统的int array[100];成为最好的?

提前致谢! :)

最佳答案

当您在编译时知道数组的长度时,您可能应该使用 array。您也可以选择vector,但这可能会让某些人认为大小可能会发生变化(或者至少在编译时未确定)。如果您使用大型数组并且变量位于本地范围内,您应该考虑使用 vector

使用 int array[100]; 也可以作为替代方案,它有一些优点也有一些缺点。

优点是它的设置速度可能稍快(无论如何它可能比 vector 快)并且您可以用经典方式初始化它。另一个是一些实现将允许经典数组在实例化时决定可变长度(我不认为它已经成为标准,但它很容易支持),如果你当然接受依赖支持这个的实现扩展名。

缺点是您不能轻松地完全访问 STL 方法(您仍然可以通过 std::beginstd::end 来获取数组的迭代器),而且如果创建为局部变量,则必须使用堆栈空间来存储对象,而不是 vector ,后者需要为存储动态分配空间( array 可能会使用堆栈空间)。

关于c++ - C++ 对象数据成员的最佳数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33096599/

相关文章:

c++ - AS3 中的计数器 "without dynamic text field"

c++ - 如何使用 C++ new 而不是 C malloc 分配内存

c++ - 在 C++ 中使用 sscanf 从字符串中提取一个 int

C - 在跟踪索引的同时对 float 组进行排序

javascript - names.forEach 不是函数

python - 如何使用 pybind11 提供默认枚举值?

c++ - 在成员函数的默认参数中使用强类型枚举的成员

java - 在 vector 类中加载 vector (Java)

c - 如何遍历一个数组并在C中找到所有可达点?

c++ - 使用重载构造函数赋值