c++ - 数组键是否确定 C++ 中的数组大小?

标签 c++ arrays

我将对象的一些设置存储在一个数组中。对象的 ID 用作键。 id 从 100000 开始向上。如果我要为 ID 为 100 000 的对象输入数据,cpp 会自动创建 99999 个从 0 开始的空白键条目吗?

最佳答案

数组大小在您创建数组时确定。

要访问索引为 100 000 的对象,您需要至少具有该大小的数组,这可以回答您的问题。

如果数组较小,您将访问内存

array begin address + (index*object size)

这可不是什么好事。例如。以下将打印一些数据,但它是存储在内存中的那个点的数据,它在你的数组之外(不是一件好事):

string arr[3];
cout << arr[5] << endl;

假设您正在谈论标准数组,例如:

string arr[10];

数组的大小是在你编译它的时候指定的,例如你不能这样做:

string arr[]; // this will fail to compile, no size specified

但你这样做:

string arr[] = {"1","2","3"};  // array size is 3
string arr1[3];                // array size is 3
string arr2[3] = {"1"};        // array size is 3

如果你想为对象映射额外的参数,你最好使用 std::map 这样的:

class person {};
std::map<person*,int> PersonScore;

这假定附加参数在逻辑上不是对象的一部分,否则您只需将它们添加到对象即可。

关于c++ - 数组键是否确定 C++ 中的数组大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685372/

相关文章:

c++ - 如何将整个流读入 std::string?

c++ - 浮点精度 - C++03

c++ - 如何获取数组元素的地址?

ruby - 将范围转换为 Ruby 中的浮点值数组时出错

JavaScript 数组长度返回 0

php - 检索帖子数组值

javascript - 将 JavaScript 数组的字符串表示形式转换为对象

c++ - NuGet 不添加包含目录

C++11 基于范围的循环 : How does it really work

c - 如何在编译时确定数组的长度?