我有一张类似
的地图std::map< int, int> random[50];
如何将此贴图作为参数传递给函数,例如Perform()?
提前致谢。
答案 0 :(得分:3)
void Perform( std::map< int, int > r[], size_t numElements );
或
void Perform( std::map< int, int >* r, size_t numElements );
然后,无论如何,请致电
Perform( random, 50 );
编辑:对于任何const数组大小,也可以如下调用。
Perform( random, sizeof( random ) / sizeof ( random[0] ) );
答案 1 :(得分:2)
假设Perform()有一些了解随机大小的方法,你可以将指针传递给随机...例如:
执行(安培;随机);
或者,您可以使用std :: list的std :: maps,并将该列表的指针(甚至是副本)传递给Perform():
执行(随机);或执行(&amp; random);
当然,取决于宣布表演的方式。
答案 2 :(得分:1)
根据您是否可以使Perform
成为模板功能,您可以选择
void Perform( const std::map<int,int> (& map)[50] )
这是一个代码片段,说明了所有这三个。
#include <map>
// number 50 hard coded: bad practice!
void Perform( const std::map<int,int> (& maps ) [50] ) {}
// C-style array passing: pointer and size
void Perform( const std::map<int,int>* p_maps, size_t numberofmaps ){}
// 'modern' C++: deduce the map size from the argument.
template<size_t N>
void TPerform( const std::map<int,int> (& maps)[N] ) {}
int main() {
std::map<int,int> m [ 50 ];
Perform( m );
Perform( m, 50 );
TPerform( m );
}