我将对象的一些设置存储在一个数组中。对象的 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/