Reputation: 75
I'm using a struct. Is there some way to iterate through all the items of type "number"?
struct number { int value; string name; };
Upvotes: 5
Views: 16471
Reputation: 3741
In C++ map works like python dictionary, But there is a basic difference in two languages. C++ is typed and python having duck typing. C++ Map is typed and it can't accept any type of (key, value) like python dictionary. A sample code to make it more clear -
#include <iostream>
#include <map>
using namespace std;
map<int, char> mymap;
mymap[1] = 'a';
mymap[4] = 'b';
cout << "my map is -" << mymap[1] << " " <<mymap[4] << endl;
You can use tricks to have a map which will accept any type of key, Refer - http://www.cplusplus.com/forum/general/14982/
Upvotes: 10
Reputation: 264381
You can use std::map
(or unordered_map
)
// Key Value Types.
std::map<int, std::string> data {{1, "Test"}, {2, "Plop"}, {3, "Kill"}, {4, "Beep"}};
for(auto item: data) {
// Key Value
std::cout << item.first << " : " << item.second << "\n";
}
Compile and run:
> g++ -std=c++14 test.cpp
> ./a.out
1 : Test
2 : Plop
3 : Kill
4 : Beep
The difference between std::map
and std::unordered_map
is for std::map
the items are ordered by the Key
while in std::unordered_map
the values are not ordered (thus they will be printed in a seemingly random order).
Internally they use very different structures but I am sure you are not interested in that level of detail.
Upvotes: 3
Reputation: 1464
As per my understanding you want to access a value
and name
using number
. You can go for array of structure
like
number n[5];
where n[0],n[1],...n[4]
but we have some additional features in c++ to achieve this with the predefined map, set
You can find lots of examples for map
Upvotes: 3