我不太了解你的问题,但我认为这就是你要找的:
#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;
}
}