有没有办法找出一个数组有多少个值?检测是否已经到达数组的末尾也可以工作。
当前回答
你可以简单地使用这段代码:
#include <iostream>
#include <string>
#include <array>
using namespace std;
int main()
{
array<int,3> values;
cout << "No. elements in valuea array: " << values.size() << " elements." << endl;
cout << "sizeof(myints): " << sizeof(values) << endl;
}
这里是参考资料:http://www.cplusplus.com/reference/array/array/size/
其他回答
我在这里提供了一个棘手的解决方案:
你总是可以在第一个元素中存储长度:
// malloc/new
arr[0] = length;
arr++;
// do anything.
int len = *(arr-1);
free(--arr);
代价是在调用free时必须—arr
我认为这是可行的:
for(int i=0;array[i];i++)
{
//do_something
}
vector有一个size()方法,该方法返回vector中元素的数量。
(是的,这是半开玩笑的回答)
对于c++ /CX(在Visual Studio中使用c++编写UWP应用程序时),我们可以通过简单地使用size()函数来查找数组中值的数量。
源代码:
string myArray[] = { "Example1", "Example2", "Example3", "Example4" };
int size_of_array=size(myArray);
如果你计算size_of_array的输出将是:
>>> 4
只是一个想法,但只是决定创建一个计数器变量,并将数组大小存储在位置[0]。我删除了函数中的大部分代码,但你会看到退出循环后,prime[0]被分配为'a'的最终值。我尝试使用矢量,但VS Express 2013不太喜欢。还要注意,'a'从1开始,以避免覆盖[0],并在开始时初始化以避免错误。我不是专家,只是想分享一下。
int prime[] = {0};
int primes(int x, int y){
using namespace std; int a = 1;
for (int i = x; i <= y; i++){prime[a] = i; a++; }
prime[0] = a; return 0;
}