質問

私のようなマップ

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

どのようにしていただくためにこの地図のパラメータとして機能言を行う()?

よろしくお願いします。

役に立ちましたか?

解決

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] ) );

他のヒント

)(つまり、実行と仮定すると、ランダムの大きさを知るのいくつかの方法を持っている、あなたは、例えば...ランダムへのポインタを渡すことができます:

実行(&ランダム);

()を実行するために、

また、あなたは::のstd ::マップのリストをSTDを使用することができ、そしてそのリストのポインタを渡す(あるいはコピー):

(ランダム)を実行。または実行(&ランダム);

を実行する方法に応じて、もちろん、宣言されます。

によってできるかどうかを 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 );
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top