nyk*_*kon 9 c++ arrays dynamic
我用c ++中的1D数组有一个小问题.我有一个功能线:
void func(int (&array)[???])
{
// some math here;
"for" loop {
array[i] = something;
}
}
Run Code Online (Sandbox Code Playgroud)
我在代码中的某处调用函数,在我进行数学运算之前,我无法知道数组的维数.该数组作为引用转到函数!,因为我需要在main()函数中使用它.我怎么能像这样分配数组?所以数组有?? 维度转到函数作为引用然后我必须放置维度并写入一些值.
Ign*_*ams 14
既然您正在使用C++,为什么不使用C++ std::vector<>呢?
Pra*_*rav 10
其他人提到你应该std::vector在C++中使用它们是正确的.
但是你可以通过制作func一个功能模板来使你的代码工作.
template <typename T, size_t N>
void func(T (&array)[N])
{
// some math here;
"for" loop {
array[i] = something;
}
}
Run Code Online (Sandbox Code Playgroud)
使用指针,而不是引用:
void func(int *a, int N);
Run Code Online (Sandbox Code Playgroud)
或者,更容易,使用矢量:
void func(std::vector<int> &a);
Run Code Online (Sandbox Code Playgroud)
可以通过简单地说来分配矢量
std::vector<int> a(10);
Run Code Online (Sandbox Code Playgroud)
可以使用检索元素的数量a.size().
如果传递给的数组func是堆栈数组而不是指针,则可以使用函数模板保留其大小:
template <class T, size_t N>
void func(T(&array)[N])
{
size_t array_length = N; // or just use N directly
}
int main()
{
int array[4];
func(array);
}
Run Code Online (Sandbox Code Playgroud)
也就是说,正如其他人已经指出的那样,std::vector这可能是最好的解决方案.