我想知道这是否可行(在项目中非常容易使用)
说:
// array size (COUNT)
int foo[COUNT];
// values
foo[0] = 1;
foo[1] = 43;
foo[2] = 24;
// define (or equivalent) its size at the end
#define COUNT 3
(这是设计,因此每当我更改数组长度时,我都不必对其进行微调)
感谢。
编辑: 我正在寻找的是在数组填充值后定义数组的大小。在示例中,我只知道在放置值时它是3。所以我可以添加4个" foo" s,只需要更改下面的#define。
下一步编辑:
// this is the idea, can this be possible? or even a "forward" declared
int foobar = THEVALUE
// way further down
#define THEVALUE 5;
答案 0 :(得分:3)
int foo[] = {1, 43, 24};
int const count = 3; // See the SO array FAQ for how to compute this.
一种简单的类型安全的计算大小的方法,在SO数组常见问题中没有提到(因为它是在C ++ 11之前编写的),是
int const count = end( foo ) - begin( foo );
其中end
和begin
是来自std
标题的<iterator>
命名空间函数。
有关其他方式,请参阅SO array FAQ。
通常,在现代C ++中,最好在原始数组上使用std::array
(固定大小)和std::vector
(动态大小)。这更安全,功能更丰富,特别是分配和轻松检查大小的能力。遗憾的是,std::array
不支持从初始值设定项推断出的大小,因此即使数组大小不变,您也必须使用std::vector
:
vector<int> foo = {1, 43, 24};
// foo.size() gives you the size at any moment.
答案 1 :(得分:1)
您可以使用初始化列表初始化数组,然后您根本不需要知道它的大小:
int foo[] = { 1, 43, 24 }
int size = sizeof(foo) / sizeof(int); // if you do need to know size
编辑: 对于更惯用的C ++ 11,请参阅上面的答案:)