-3

私の最初の問題は、多次元の int 配列を文字列にマップする方法でした。以下が解決策でした: Ikspeto に感謝

    map<int , map<int,string>> _myvar;
    _myvar[0][0] = "Some String00";
    _myvar[0][1] = "Some String01";
    _myvar[0][2] = "Some String02";
    _myvar[1][0] = "Some String10";

今私の問題は、これにマップのfindまたはcountメソッドを実装する方法ですか?

4

2 に答える 2

1

文字列を2D配列に直接格納する場合は、次を使用できます。

std::string _myvar[10][20]

C文字列への(const)ポインタの配列が必要な場合は、次のようにします。

char* _myvar[10][20];
// or
const char* _myvar[10][20];

動的なサイズの配列が必要な場合は、vector<vector<string>>(またはboost::multi_array おそらく)を使用します

于 2012-06-18T09:24:55.317 に答える
1

私はあなたの質問をよく理解していませんでしたが、これはあなたが探しているものだと思います:

#include <string>
#include <iostream>
#include <map>


using namespace std;

int main()
{
   map<int, map<int, string> > m; 

   m[0][0] = "one";
   m[1][3] = "two";
   cout<<m[0][0]<<endl;
   cout<<m[1][3]<<endl;
}

string> の後に空白スペースを残す必要があることに注意してください。

また

すべての文字を int に変換する場合:

#include <string>
#include <iostream>


using namespace std;

int main()
{
   string s;
   s = "one";

   int arr[2][10];

   int a = s.size();
   for(int i=0;i<a;i++)
   {
       arr[0][i] = s[i];
   }

   cout<<arr[0][0]<<" "<<(char)arr[0][1]<<endl;
}

編集

完全なソース コードを投稿します。私の例は、私のローカル コンパイラで動作しています。提供されたコード サンプルでは、​​_menu_item という変数を宣言していますが、_myvar を使用しています。完全なコードのどこかで _myvar を別の方法で宣言している可能性があります。

最初の値でマップ エントリを見つけるには、find() を使用できます。Find は反復子を返します。

#include <string>
#include <iostream>
#include <map>


using namespace std;

int main()
{
    map<int , map<int,string> > _myvar, my;
    _myvar[0][0] = "Some String00";
    _myvar[0][1] = "Some String01";
    _myvar[0][2] = "Some String02";
    _myvar[1][0] = "Some String10";

    map<int , map<int,string> >::iterator it; /* This is an iterator for this kind of map.
    You can use it to assign a position to it from the map. */



    it = _myvar.find(0); //Like this
    _myvar.erase (it); // And use it for example like this


    _myvar[3] = _myvar.find(0)->second ; // The pointer ->second gives the second value of the map. In this case an another map.

}

値で検索するには、これを使用できます:

for (it = _myvar.begin(); it != _myvar.end(); ++it)
{
    if (it->second == value)
    {
        key = it->first;
        break;
    }
}
于 2012-06-18T09:23:55.830 に答える