30 条回复  ·  624 次点击
Hackerl 小成 2024-1-28 13:36:02
std::span<int>
iOCZS 小成 2024-1-28 13:53:35
sizeof 能求得静态分配内存的数组的长度,sizeof 不能求得动态分配的内存的大小。
所以得用 STL 里容器
yolee599 初学 2024-1-28 14:03:17
用 C 语言的方案:
1. 函数再加一个 length 参数,传参的时候传进去。
2. 数组最后一个元素加一个特别的值,然后在函数内对数组元素进行遍历计数。

用 c++ 语言的方案:
使用 std::vector 。
roycestevie6761 小成 2024-1-28 14:11:58
不就是最简单的数组引用传递?   C++ Primer 有讲,最基础的模板参数的使用,楼上 geelaw 说的是对的,其他人的回答我看着真是头晕,应该没有一个真正用过 C++写项目的
littlewing 初学 2024-1-28 15:03:42
请使用 std::array 或 std::vector
imKiva 小成 2024-1-28 15:08:55
template <typename T, size_t N>
size_t length(const T (&array) [N]) {
  return N;
}
stcheng 小成 2024-1-28 15:34:15
+1 to geelaw's answer
chendl111 初学 2024-1-28 16:11:15
#include <bits/stdc++.h>
using namespace std;

template <size_t n>
size_t get_array_length(int (&nums)[n])
{
    return n;
}

int main() {
    int nums[] = {1, 2, 3, 4, 5};
    size_t length = get_array_length(nums);
    std::cout << "The length of the array is: " << length << std::endl;

    // 打印数组中的所有元素
    for (size_t i = 0; i < length; ++i) {
        std::cout << nums << " ";
    }
    std::cout << std::endl;

    return 0;
}
ysc3839 小成 2024-1-28 16:23:22
@ripperdev 这里可以直接用 std::size 吧?用 std::distance 的话,遇到 std::list 可能会报很复杂的错误吧?
Droi 小成 2024-1-28 19:20:29
不确定生成的数据长度可以用向量,确定的话用结构体包裹数组与数组相应的长度。
方法很多啊,能用库当然是最方便的。
返回顶部