Is there any C++ function to sort a Map?

Related searches

I want to know that how can I sort an ordered_map in C++ on the basis of values. Is there any function to do it?

You can not really change the elements of a std::map. However, you can use std::vector to first copy the elements in the vector and then use std::sort(). Sort elements of std::map.

#include <map>
#include <vector>
#include <algorithm>

typedef std::pair<std::string,int> pair;

int main()
    // input map
    std::map<std::string,int> map = {
        {"two", 2}, {"one", 1}, {"four", 4}, {"three", 3}

    // create an empty vector of pairs
    std::vector<pair> vec;

    // copy key-value pairs from the map to the vector

    // sort the vector by increasing order of its pair's second value
    // if second value are equal, order by the pair's first value
    std::sort(vec.begin(), vec.end(),
            [](const pair& l, const pair& r) {
                if (l.second != r.second)
                    return l.second < r.second;

                return l.first < r.first;

    // print the vector
    for (auto const &pair: vec) {
        std::cout << '{' << pair.first << "," << pair.second << '}' << '\n';

    return 0;

C++, Hepatitis A is usually a short-term infection. Hepatitis B and hepatitis C can also begin as short-term infections, but in some people, the virus remains in the body and causes chronic (long-term) infection. There are vaccines to prevent hepatitis A and hepatitis B; however, there is no vaccine for hepatitis C.

A map is an associative container. Unlike sequential containers, where you have control over the location of the element, an associative container itself controls the order of the elements. Once the associative container is created, the ordering cannot be changed.

There is no ordered_map in standard C++. There is std::map, which is a tree (and therefore the elements already appear sorted based on the comparator) and std::unordered_map, which is a hash table (the elements are somewhat ordered based on the hash of the key).

What is C?, Vitamin C has been studied for many years as a possible treatment for colds, or as a way to help prevent colds. But findings have been inconsistent. But findings have been inconsistent.

This answer covers the case that you are referring to values inside the map itself.

First off, the container you want is std::map. There is no ordered_map in the standard library, only map or unordered_map.

You can supply map with your own comparer so that it sorts it like you want. For example:

struct MyOrder
    constexpr bool operator()(MyType a, MyType b) const 
        // return true, so that a < b accodring to your definition

and use it like

std::map<MyType, MyOrder> myMap;

Different hepatitis C virus genotypes (variants) cause most infections in different parts of the world. A global vaccine would have to protect against all these variants of the virus. Limited animal models of hepatitis C infection. Hepatitis C virus can infect chimpanzees, and the infection in chimpanzees is similar to that in human adults.

You cannot rearrange elements of (ordered_)map(/set).

You might copy values (and/or keys) into std::vector and std::sort that.

The += operator in C is one of the language’s compound assignment operators. It is essentially a shorthand notation for incrementing the variable on the left by an arbitrary value on the right.

No. A std::map is designed to store elements formed by a combination of a key value and a mapped value, where the key values are used to sort and identify the elements.

To sort by values, you could simply create an inverted map:

template <typename T1, typename T2>
std::map<T2, T1> invert(const std::map<T1, T2> & m)
    std::map<T2, T1> ret;
    for (const auto& e : m)
        ret[e.second] = e.first;
    return ret;

There are many solutions to this problem, and you might prefer one over the other in function of your needs.

As with any surgical procedure, there are benefits and disadvantages to C-sections that need to be carefully considered. "There are benefits to a C-section, especially practically speaking," says

See's Candies Shop Locator | With the most up-to-date shop information including directions, hours, and phone numbers for all of our See's locations.

The intent of using the Any() method is completely clear - you want to know if there are any elements in the list or not. The intent of the expression Count()!=0 on the other hand is not obvious for the reader.

THERE IT IS. → Nancy Pelosi just said "I don't think that there should be any debates." Even top Democrats know @realDonaldTrump would absolutely crush Joe Biden on a debate stage.

  • What is an ordered_map? That's not a standard type...
  • You might look into Boost.Bimap though.
  • If you are referring to std::map, it is already ordered, based on std::less. If you want a different order, pass in a different Compare when you instantiate the template.
  • Extending @jxh 's comment: std::map, as well as std::set, is mandated by the standard to be implemented as a binary search tree (the implementation chosen usually is a red-black-tree), so being sorted is an immanent feature... On the other hand, if you speak of std::unordered_map (or set) and just forgot the un-, then bad luck, you cannot sort, that would break hashing.
  • @RemyLebeau It wasn't clear the OP intended std::unordered_map. Even the accepted answer uses std::map.
  • Or you could copy the keys to a vector and sort them according to their values if you need them...