我正在学习C++(对JavaScript有相当的信心)而且我找不到与JS相当的C++ array.length;.我想要一种基于数组长度循环数组的简单方法?
我已经遵循了一些教程但是所有接缝要求在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;
}
}
Run Code Online (Sandbox Code Playgroud)
对于像你这样的C风格数组,你可以使用基于范围的for循环:
for (int value : shoppingList)
{
std::cout << value << '\n';
}
Run Code Online (Sandbox Code Playgroud)
至于从数组中获取元素的数量,有一个"技巧":您知道数组本身的大小,并且您知道数组中每个元素的大小.这意味着如果将数组的大小除以每个元素的大小,您将获得元素的数量.
简而言之
size_t numberElements = sizeof shoppingList / sizeof shoppingList[0];
Run Code Online (Sandbox Code Playgroud)
重要提示:此"技巧"仅适用于实际数组!一旦一个数组衰减到一个指针(它经常发生的第一个元素),你所剩下的就是指针.没有办法获得它指向的内存大小,并且不能使用这个"技巧".
正如我的评论中所提到的,"最佳"解决方案是使用std::array或者std::vector.