私は次のような地図を持っています
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()にランダムのサイズを知る何らかの方法があると仮定すると、ランダムへのポインターを渡すことができます...例:
Perform(&random);
または、std::mapsのstd::listを使用して、そのリストのポインター(またはコピー)をPerform()に渡すこともできます。
実行(ランダム); またはPerform(&random);
もちろん、Performがどのように宣言されているかに応じて。
テンプレート関数を作成できるかどうかに応じてPerform
、次のことを選択できます。
void Perform( const std::map<int,int> (& map)[50] )
これは、3つすべてを示すコードフラグメントです。
#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 );
}