C++ 如何使用C+中的行和列获取映射中元素的值+;?

C++ 如何使用C+中的行和列获取映射中元素的值+;?,c++,map,iterator,C++,Map,Iterator,我想知道如何从地图上获取特定值 使用行和列字符串保存两个向量的。 例如,如果用户输入“R1”和“C1”,则打印字符串“1”。 在这段代码中,我使用数组下标来访问向量。 如果您能解释如何使用迭代器访问它,这将非常有帮助 对不起,如果这是重复的问题 谢谢 #include <string> #include <iostream> #include <vector> #include <map> using namespace std; typede

我想知道如何从地图上获取特定值 使用行和列字符串保存两个向量的。 例如,如果用户输入“R1”和“C1”,则打印字符串“1”。 在这段代码中,我使用数组下标来访问向量。 如果您能解释如何使用迭代器访问它,这将非常有帮助

对不起,如果这是重复的问题

谢谢

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

using namespace std;

typedef pair<string, string> Pair;
typedef map<Pair, string> Map;
typedef vector<string> strVec;

int main()
{
const int COL_SIZE = 3;
const int ROW_SIZE = 3;

string row_array[ROW_SIZE] = {"R1","R2","R3" };
string col_array[COL_SIZE] = { "C1", "C2", "C3" };

strVec column;
strVec row;
for (size_t i = 0; i < COL_SIZE; ++i)
{
    row.push_back(col_array[i]);
    column.push_back(row_array[i]);
}

Map MyMap;
Map::iterator iterator;

string numbers[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
int numberIndex = 0;
for (int i = 0; i < ROW_SIZE; ++i)
{
    for (int j = 0; j < COL_SIZE; ++j)
    {
        MyMap[make_pair(row[i], column[j])] = numbers[numberIndex];
        cout << MyMap[make_pair(row[i], column[j])];
        ++numberIndex;
    }
    cout << endl;
}


string userInputRow;
cout << "Enter a row: " << endl;
cin >> userInputRow;


string userInputCol;
cout << "Enter a column: " << endl;
cin >> userInputCol;
#包括
#包括
#包括
#包括
使用名称空间std;
typedef对;
typedef地图;
typedef向量strVec;
int main()
{
const int COL_SIZE=3;
const int ROW_SIZE=3;
字符串行数组[行大小]={“R1”、“R2”、“R3”};
字符串col_数组[col_SIZE]={“C1”、“C2”、“C3”};
strVec柱;
strVec row;
对于(大小i=0;icout您映射的不是两个向量,而是从一对字符串映射到另一个字符串。
我想知道您使用这种结构而不是向量的用例是什么

您已经可以访问代码中的映射元素:

cout << MyMap[make_pair(row[i], column[j])];

<代码> CUT考虑使用<代码>映射:查找< <代码>或<代码>运算符[]
对于map,或者如果您可以使用C++11
map::at
从map中获取值。您的map是成对键入的,所以只需获取用户输入,将它们配对,然后使用
map::find
就可以了。因为这两行中有一个错误:行。推回(行数组[i]);列。推回(列数组[i]);那么我该怎么做?用什么替换它们?好的。我知道了。我使用了插入函数。一切都很好。谢谢。
row.push_back(row_array[i]);
column.push_back(col_array[i]);
cout << MyMap[make_pair(row[i], column[j])];
for(const auto &p : MyMap) {
    std::cout << p.second << std::endl; 
}