我有一张像
std::map< int, int> random[50];
如何将此映射作为参数传递给函数说 Perform()?
提前致谢。
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] ) );
假设 Perform() 有某种方式知道随机的大小,您可以将指针传递给随机...例如:
执行(&随机);
或者,您可以使用 std::maps 的 std::list,并将该列表的指针(甚至是副本)传递给 Perform():
执行(随机);或执行(&随机);
当然,这取决于如何声明 Perform。
根据是否可以制作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 );
}