我有一个地图,其中包含一个int和一对嵌套的两个字符串:
map<int, pair<string, string> > books;
我也有一个字符串向量。
vector<string> returned;
它们附带的两个迭代器:
vector<string> returned::iterator it2;
map<int, pair<string, string> >::iterator it3;
我正在尝试访问嵌套在地图中的对的第一个字符串,以将其与向量“返回”的当前字符串进行比较。我使用两个迭代器来做到这一点。但是,我似乎无法访问嵌套对的第一个字符串。
//PUT BACK BORROWED BOOKS
for (it2 = returned.begin(); it2 != returned.end(); it2++){
//SEARCH FOR POSITION OF BOOK
for (it3 = books.begin(); it3 != books.end(); it3++){
//PROBLEM IN LINE BELOW
if(it2 == (it3->second-> first))
int bookPos = it3 -> first;
}
}
有谁知道如何在对中引用第一个字符串?显然,“它 - >第二个 - >第一个”不是解决方案。
提前致谢。
答案 0 :(得分:3)
有两个错误。 it3->second
不是迭代器。同样如评论中所述,您将it2(迭代器)与字符串进行比较。有错误的行应如下所示:
if(*it2 == (it3->second.first))
答案 1 :(得分:0)
地图也可以创建好的查找表。映射键对应于由一对表示的两个值。以下示例显示了如何访问密钥和配对值。
int main()
{
typedef map<string, pair<int, int> > op_type;
op_type op = {
{"addu", make_pair(33, 1) }
};
vector<string> this_line;
op_type::const_iterator i = op.find(this_line[0]);
if( i != op.end() )
{
cout << "key: " << i-first << endl;
cout << ".first value in pair " << i->second.first << endl;
cout << ".second value in pair " << i->second.second << endl;
}
}
打印: 关键:addu 第33对中的第一个值 第1对中的.second值