Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Translating python dictionary to C++

I have python code that contains the following code.

d = {}  d[(0,0)] = 0 d[(1,2)] = 1 d[(2,1)] = 2 d[(2,3)] = 3 d[(3,2)] = 4  for (i,j) in d:     print d[(i,j)], d[(j,i)] 

Unfortunately looping over all the keys in python isn't really fast enough for my purpose, and I would like to translate this code to C++. What is the best C++ data structure to use for a python dictionary that has tuples as its keys? What would be the C++ equivalent of the above code?

I looked at sparse matrices in the boost library, but couldn't find an easy way to loop only over the non-zero elements.

like image 273
D R Avatar asked Dec 03 '09 21:12

D R


1 Answers

A dictionary would be a std::map in c++, and a tuple with two elements would be a std::pair.

The python code provided would translate to:

#include <iostream> #include <map>  typedef std::map<std::pair<int, int>, int> Dict; typedef Dict::const_iterator It;  int main() {    Dict d;     d[std::make_pair(0, 0)] = 0;    d[std::make_pair(1, 2)] = 1;    d[std::make_pair(2, 1)] = 2;    d[std::make_pair(2, 3)] = 3;    d[std::make_pair(3, 2)] = 4;     for (It it(d.begin()); it != d.end(); ++it)    {       int i(it->first.first);       int j(it->first.second);       std::cout <<it->second <<' '                 <<d[std::make_pair(j, i)] <<'\n';    } } 
like image 200
Thomas Avatar answered Oct 12 '22 22:10

Thomas