Skip to content

Instantly share code, notes, and snippets.

@Drunkar
Last active August 4, 2016 10:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Drunkar/7763993 to your computer and use it in GitHub Desktop.
Save Drunkar/7763993 to your computer and use it in GitHub Desktop.
#include <map>
#include <string>
#include <algorithm>
#include <iostream>
template<typename A, typename B>
std::pair<B,A> flip_pair(const std::pair<A,B> &p)
{
return std::pair<B,A>(p.second, p.first);
}
template<typename A, typename B>
std::map<B,A> flip_map(const std::map<A,B> &src)
{
std::map<B,A> dst;
std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()),
flip_pair<A,B>);
return dst;
}
int main(void)
{
std::map<std::string, int> src;
src["a"] = 3;
src["b"] = 1;
src["c"] = 2;
std::map<int, std::string> dst = flip_map(src);
for( std::pair<int, std::string> item : dst)
std::cout << item.first << "," << item.second << std::endl;
}
@Drunkar
Copy link
Author

Drunkar commented Dec 3, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment