(数组)参数的大小

时间:2012-09-03 12:41:19

标签: arrays visual-studio-2010 visual-c++ size

我有一个代码,使用以下方式查找输入的大小:

template <typename T>
void func (T& input) {
    const void *valuePtr;
    size_t valueSize;
    tie(valuePtr, valueSize)
            = detail::ParamInfo<typename remove_const<T>::type>::get(input);
    //code
}

如果输入是一个数组,我需要得到它的实际大小而不是指针大小。 因此,如果我有

size_t data[3];

我用数据参数调用func,我确实得到valueSize = 12 但如果我不知道数组的大小,我会遇到问题,例如: 如果我有

vector<size_t> data;
data = getData(); //as a result data is a vector of 2 elements
size_t *dataArr = &data[0];

如果我使用func param调用dataArr,我会得到4而不是8。

我该如何解决这个问题 - 我无法知道/预测getData()

返回的参数大小

1 个答案:

答案 0 :(得分:0)

在编译时无法获得动态数组的大小。你需要在运行时传递矢量大小作为函数参数,为它做过载:

template <typename T> void func(T& input, size_t i_size);

或者更好地为std::vector

制作重载
template <typename T> void func(std::vector<T>& input);
// Use input.size() to get array size