hyp*_*not 5 c++ arrays stl visual-studio-2010
在C++中,当我在编译时不知道大小时,如何将数组作为引用传递?到目前为止,我发现使其工作的唯一方法是使用类似的东西
const double( &numbers ) [size]
Run Code Online (Sandbox Code Playgroud)
但这意味着我需要在编译时知道数组的大小,因此我无法在外部函数中使用它.
我的问题是:
( const double( &numbers ) [length] )
,因为例如我不知道它的大小,我如何确保它不会被复制,但它被引用?( double array[] )
它是引用还是被复制?在C++中,您应该使用std :: vector.
在C/C++中,您不能将数组作为副本传递.数组总是通过引用传递.
编辑
在C++中,通过引用传递的数组具有不同的含义.在C和C++中,数组衰减成指向数组第一个元素的指针.请查看以下评论.
其他答案很棒,但没有人提到使用模板来处理这个问题.您仍然应该使您的函数采用指针和大小,但模板可以自动为您填充:
void f( double const numbers[], std::size_t length )
{ ... }
template< std::size_t Length >
void f( double const (&numbers)[ Length ] )
{
return f( numbers, Length );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18847 次 |
最近记录: |