2

C++ ソース ファイルをコンパイルしようとしていますが、コンパイルしようとすると次のエラーが発生します。

エラー :

エラー: 'template class std::map' がテンプレート パラメーターなしで使用されました

がある行でエラーが発生しますmp.find(someString)

map<string, int *> mp;
sub = "xyz";
if(mp.find(sub) != map::end) {  
   doSomething();
}

ifステートメントの実行時にエラーが発生します。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

4

mp.end()の代わりに使用map::end

アップデート :

if(mp.find(sub) != map::end) { 

if(mp.find(sub) != mp.end()) {
//                 ^^^^^^^^

std::map::endリファレンスを参照してください

于 2013-07-28T11:42:37.817 に答える
2

使用する必要がありますmp.end

 if(mp.find(sub) != mp.end() ) {

このリファレンスfindは、より広範な例を示しています。

于 2013-07-28T11:43:32.853 に答える
1

コードを次のように更新する必要があります。

if(mp.find(sub) != mp.end())
//                 ^^^^^^^^

このend()メソッドは、マップ コンテナ内の末尾要素を参照するイテレータを返します。

http://www.cplusplus.com/reference/map/map/end/

たぶん、std::end誰がC++11機能であるかを使用しようとしていたのでしょう:

if(mp.find(sub) != std::end(mp))
//                 ^^^^^^^^^^^^

この場合、std::end(mp)は とまったく同じ動作をしmp.end()ます。

ドキュメントを見てみましょう: http://www.cplusplus.com/reference/iterator/end/

于 2013-07-28T11:44:04.087 に答える