引用映射中嵌套对中的值
Referencing a Value from a Nested Pair in a Map
我有一个映射,其中包含一个 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;
}
}
有谁知道如何引用这对中的第一个字符串?显然,"它>第二>第一"不是解决方案。
提前谢谢。
有两个错误。 it3->second
不是迭代器。同样如注释中所述,您正在将it2(迭代器)与字符串进行比较。 有错误的行应如下所示:
if(*it2 == (it3->second.first))
地图也可以成为很好的查找表。映射键对应于由一对表示的两个值。下面的示例演示如何访问键值和对值。
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;
}
}
指纹:键:阿杜.对 33 中的第一个值.对 1 中的第二个值
相关文章:
- 在C++中搜索嵌套多映射值
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果我将嵌套映射作为多重映射的值,如何将值插入内部映射?
- 迭代嵌套映射与范围为循环:没有名为"first"的成员
- 如何在嵌套映射(C++)中高效地查找密钥
- c++ 嵌套结构映射找不到成员
- 在结构的嵌套映射上链接运算符 []
- 访问range_expression中的嵌套元素会返回不完整的映射(段错误)
- 如何同时从嵌套映射中检索键字符串
- YAML-cpp 解析嵌套映射和序列错误
- 嵌套映射迭代器
- 引用映射中嵌套对中的值
- 插入到C++中的嵌套映射中
- c++嵌套映射不匹配成员函数const成员
- 如何给嵌套映射赋值
- 属性传播到嵌套映射
- 如何在C++中转储嵌套映射以进行调试
- 在 C++ 中删除嵌套映射中的条目
- 如何在c++中插入数据到嵌套映射
- Yaml-cpp(新API) -嵌套映射/序列组合和迭代