Как получить данные из std:: map type struct?

Прежде всего, большое спасибо за помощь и чтение этого поста.

У меня такая структура: x, y.
И у меня есть карта, где данные являются этой структурой.
Я хотел бы получить данные, например, от iterator [1] get .икс.
Как я могу это сделать?

Большое спасибо.

2 ответа

  1. Если у вас есть итераторit, указывающий на элемент astd::map<X, Y>, то вы можете получить ссылку const на ключ using it->firstи ссылку на сопоставленный тип using it->second, потому itчто указывает на std::map<X, Y>::value_typeзначение, которое имеет тип

    std::pair<std::map<X, Y>::key_type const,
              std::map<X, Y>::mapped_type>
    

    Например:

    Y * setX(std::map<X, X> & dict, X const & value) {
        std::map<X, Y>::iterator it = dict.find(value);
        if (it != dict.end())
            return nullptr;
        assert(it->first == value);
        return &it->second;
    }
    
  2. #include <map>
    #include <iostream>
    #include <string>
    using namespace std;
    
    
    int main()
    {
        // for a simple struct you could use "pair" (especially if you don't want to name it).
        // anyway:
        map<int, pair<double, string>> mymap;
        mymap[0] = pair<double, string>(4.56, "hello");
        mymap[1] = pair<double, string>(9.87, "hi");
        for(auto & item : mymap)
        {
            cout << "Key: " << item.first << ", Value: [" << item.second.first << ", " << item.second.second << "]" << endl;
        }
        return 0;
    }
    

    Выход:

    Ключ: 0, значение: [4.56, hello]

    Ключ: 1, Значение: [9.87, hi]