を2次元地図のパラメータとしての機能にはc++?
質問
私のようなマップ
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 );
}
所属していません StackOverflow