Join the Discord. Talk about Game Dev. Talk about Gaming.
Looping through unordered maps in C++ is quite simple if you know what a range-based for loop is. If you don’t know what a range-based for loop is, click here. The code looks like this:
for (auto item : m_objectList) { item.second.SendData(); }
This works exactly like a normal range-based for loop with one key difference. When you reference the iterator, you have to choose either .first or .second before accessing any data stored in the list.
.first refers to the ‘key’ identifier in your unordererd_map.
.second refers to the data stored at that iterator.
If you are not sure what I mean by ‘key’ identifier, it’s how you placed data into your list in the first place, like so:
m_objectList[ID] = object;
So .first in this case would refer to your ID.
.second is all of the public variables and functions of the iterator.
int temp; temp = item.first;
The above code accesses the ID of your iterator and assigns it to a temporary int.
item.second.SendData();
Accesses the actual data stored at the iterator, in this case a public function called SendData().
Leave a Reply