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.
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'; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With