Вы не можете сделать это, используя std::map
- first
в pair
используется для сравнения (это называется key ).В вашем случае std::string
- это клавиша .
. Вы можете использовать std::set< std::pair< std::string, MyStruct > >
, а затем реализовать operator<
для двух std::pair< std::string, MyStruct >
-х.
Или вы можете изменить определение std::map
, если это возможно / разрешено / подходит / и т. Д.Это действительно зависит от того, что вы пытаетесь сделать и что вам разрешено делать.
Или какой-то другой контейнер (который сохраняет порядок элементов в том виде, в котором он был вставлен, например std::list
, std::vector
и т. д.), а затем с помощью std::sort
или метода контейнера sort
, если он существует.