如何将2D地图作为参数传递给c ++中的函数?

时间:2009-08-31 05:08:43

标签: c++ function stdmap

我有一张类似

的地图
std::map< int, int> random[50];

如何将此贴图作为参数传递给函数,例如Perform()?

提前致谢。

3 个答案:

答案 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成为模板功能,您可以选择

  • 通过(const)引用传递地图:void Perform( const std::map<int,int> (& map)[50] )
  • 传递指针和大小(C路)
  • 创建一个自动推断出数组大小的模板

这是一个代码片段,说明了所有这三个。

#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 );
}