c++ - 如何找到数组的大小作为 int

标签 c++ arrays vector integer

如果答案非常明显,我深表歉意。 我写了一小段代码,从数组中初始化一个 vector

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 时,我倾向于发现这很烦人。我确信写一些可以为我推断答案的东西会是一个更好的习惯,因为我确信这可能会导致计算错误,因为需要用户输入并且他们输入的元素数量没有限制。

最佳答案

获取int arr[]的大小, 你可以使用 sizeof(arr) / sizeof(*arr) .

初始化vector<int>使用数组中的值,您可以使用:

int arr[] = {1,2,3,4,5};
vector<int> vec (arr, arr + sizeof(arr) / sizeof(*arr) );

要迭代 vector 的所有值,您可以使用(size() 将为您提供 vector 的大小):

for (size_t i = 0; i < vec.size(); ++i)
    cout << vec[i];

p.s. 在 C++11 中,您甚至可以使用 range-based for loop :

for (auto elem : vec)
    std::cout << elem;

关于c++ - 如何找到数组的大小作为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24709250/

相关文章:

ruby-on-rails - 如何为 Ruby 数组中的多个值执行 find_index?

c++ - 尝试 push_back 到 std::vector 时出现段错误

c++ - SDL C++ 窗口立即关闭

c++ - vector<Point> myArr 的深拷贝

javascript - 为什么它不适用于数组中的类 ".1"而适用于其他类?

java - 将数组的元素作为标签放置在 JButton 上

java - 比较 vector 并选择公共(public)元素java

c++ - 如何使用存储在列表中的特定范围的元素初始化 vector ?

c++ - 为什么没有一元运算符来获得乘法逆元? 0-x = -x ... 1/x =?

c++ - 将指针作为函数参数传递