c++ - 在 C++ 中循环遍历数组的推荐方法是什么?

标签 c++ arrays

我正在学习 C++(对 JavaScript 相当有信心),但找不到与 JS array.length; 等效的 C++。我想要一种基于数组长度循环遍历数组的简单方法?

我已经学习了很多教程,但所有接缝都需要在 for 循环中手动声明数组长度(或插入函数)?

下面的代码会出错,添加#include 会导致编译器错误 (DEV++)。

有没有C++或者没有简单调用数组长度的原因?

#include <iostream>
using namespace std;

int main () {
    int shoppingList [3] = {1, 2, 3};
    for (int i=0; i < shoppingList.size(); i++) {
        cout << shoppingList[i] << endl;
    }
}

最佳答案

对于像你这样的 C 风格数组,你可以使用 range-based for loops :

for (int value : shoppingList)
{
    std::cout << value << '\n';
}

至于从数组中获取元素的数量,有一个“技巧”:你知道数组本身的大小,你也知道数组中每个元素的大小。这意味着如果将数组的大小除以每个元素的大小,您将得到元素的数量。

简而言之

size_t numberElements = sizeof shoppingList / sizeof shoppingList[0];

重要说明:此“技巧”仅适用于实际数组!一旦一个数组衰减到一个指针(指向它的第一个元素,这经常发生),你剩下的就是指针。没有办法得到它指向的内存大小,不能用这个“技巧”。


正如我在评论中提到的,“最佳”解决方案是使用 std::arraystd::vector

关于c++ - 在 C++ 中循环遍历数组的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587631/

相关文章:

c++ - 我正在尝试重新学习 GCC C 或 C++ 编译,请帮忙

c++ - C++ 标准库是否必须用 C 或汇编语言编写?

javascript - 如何检查数组中的任何日期是否在日期范围内?

c++ - ref类c++中的动态多维数组

c++ - 当我输入 q 它关闭程序?

C++手动将字符串转换为int?

c++ - UI::MainWindow 找不到成员

C++ 实现模板化嵌套类时遇到问题

javascript - 如何: React serialise multidimensional array and unserialise it in PHP

c - 如何准备 UDP 数据报发送到服务器