Python equivalent for C++ STL vector/list containers
py | cpp |
---|---|
deque | deque |
PriorityQueue (or you may use heapq) | priorityqueue |
set | unordered_set |
list | vector |
defaultdict(int) | unordered_map |
list | stack |
deque | queue |
dict .get(val,0) | unordered_map |
in py >= 3.7, dict remember insert order. https://stackoverflow.com/a/51777540/13040423
In case you need TreeMap / TreeSet
https://github.com/grantjenks/python-sortedcontainers
Have a look at Python's datastructures page. Here's a rough translation:
- () => boost::Tuple (with one important distinction, you can't reassign values in a Python tuple)
- [] => std::vector (as the comments have aluded towards, lacks memory characteristics associated with vectors)
- [] => std::list
- {} => tr1::unordered_map or boost::unordered_map (essentially a hash table)
- set() => std::set
You can use the inbuilt list - underlying implementation is similar to C++ vector. Although some things differ - for example, you can put objects of different type in one and the same list.
http://effbot.org/zone/python-list.htm
N.B.: Please keep in mind that vector and list are two very different data structures. List are heterogeneous, i.e. can store different object types, while C++ vectors are homogeneous. The data in vectors is stored in linear arrangement whereas in list is a collection of references to the type and the memory address of the variables.