为无序映射取消引用 pair 对象的第一部分

Dereference the first part of the pair object for an unordered map

我有一个 C++ 03 兼容的编译器。在使用以下代码将元素插入无序映射时,我使用了一对对象:

unordered_map<char, string> mymap;
pair<unordered_map<char, string>::iterator,bool> ret;
ret = mymap.insert(make_pair('A',"A string of some sort."));
    if (ret.second==false)
        cout << "Could not insert an element into an unordered map.\n";
    else
        cout << // how to print the ret.first value here

我无法访问 ret.first 指向的值。如何打印出 ret.first?

的解引用迭代器

你可以这样做

cout << (ret.first)->first;

输出

A

Working demo

当您说 ret.first 时,您正在从返回的 std::pair<std::unordered_map<char, std::string>::iterator, bool>.

访问迭代器

一旦有了迭代器,下一个 ->first 就会到达作为键的 char。同样,->second 会得到该键的 std::string 值。