我试图在不知道它有多少成员的情况下输出数组中的所有数据。
是否有任何内置函数或库可以显示数组中有多少成员?
答案 0 :(得分:2)
您可以使用std::vector
内置类
只需使用#include <vector>
即可使用
答案 1 :(得分:1)
尝试以下方法:
#include <iostream>
#include <algorithm>
int main() {
int xs[] = {1, 2, 3, 4, 5};
std::for_each(std::begin(xs), std::end(xs), [](int const& x) { std::cout << x << std::endl;});
}
但请注意,数组的大小仍然是已知信息(更准确地说,是编译时信息)。在上文中,我们只是避免明确处理该信息。
答案 2 :(得分:1)
是的 - 没有。如果你有一个实际的数组,即int a[N];
,那么答案非常明显:你的数组有N个元素。如果你只有一个指针(int* a
),可能是由于数组到指针的衰减,那么答案是否定的。
如果您想要一个确定数组大小的函数,请尝试以下函数模板:
template <class T, std::size_t N>
constexpr std::size_t arr_length(T const (&)[N]) {
return N;
}
int main() {
int iarr[] = {42, 43, 44};
constexpr auto length = arr_length(iarr);
double darr[length] = {};
}
对于作为指针传递给某个函数的数组,确定长度的可能性很小:
'\0'
分隔符答案 3 :(得分:0)
不,你不能。
我建议你使用\\:
,它会解决你的问题。
如果是std::vector
,您可以使用std::array
或
for_each
如果您的数组包含指针,并且您默认将它们初始化为for(const auto item : arr)
,则可以检查指针是否有效,并且仅当指针不是nullptr
时才打印。
nullptr
答案 4 :(得分:0)