【发布时间】:2014-09-02 18:13:03
【问题描述】:
如果答案非常明显,我深表歉意。 我编写了这个从数组初始化向量的小 sn-p 代码
int arr[] = {1,2,3,4,5};
vector<int> vec = {begin(arr), end(arr)};
for (int i = 0; i < 5; ++i)
cout << vec[i];
代码运行良好,唯一困扰我的是必须知道数组大小。 for的第二个参数,
i < 5;
只是看起来有点太简单了,而且在更大的代码中没有那么准确。有什么方法可以让代码将数组中的元素数推断为整数并使用它而不是自己说明实际的元素数?在使用大多数数组或向量时,我往往会觉得这很烦人。我确信写一些可以为我推断答案的东西会是一个更好的习惯,因为我确信这可能会导致需要用户输入的错误计算,并且他们输入的元素数量没有限制。
【问题讨论】:
-
vector有一个功能。std::array也是如此,您应该使用它而不是内置数组。vector还允许您使用初始化列表,因此该数组无论如何都是毫无意义的。而且您通常会使用 ranged-for 循环或算法,因此知道大小对此也毫无意义。 -
@chris:
std::array要求您指定大小(或者您应该实现make_array)。 -
@Jarod42,内置数组也是如此。
-
@chris:不,就像 OP 的示例
int arr[] = {1, 2, 3, 4, 5}一样,您没有(明确)指定大小为5。 -
@Jarod42,你从来没有明确说过。您仍然通过初始化列表提供大小,就像使用
make_array一样。