Containers in Practice
Map Count Update
Maps associate keys with values, so repeated updates can accumulate a count for one key.
map
A `std::map` stores key-value pairs ordered by key.
keyed update
Using `counts[key]` creates a value when the key is missing and then lets the program update it.
Map Count Update
map_count_update.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <map>
#include <string>
int main() {
std::string item = "apple";
std::map<std::string, int> counts;
counts[item] += 1;
counts[item] += 1;
int count = counts[item];
std::cout << "item=" << item << std::endl;
std::cout << "count=" << count << std::endl;
return 0;
}
#include <iostream>
#include <map>
#include <string>
int main() {
std::string item = "pear";
std::map<std::string, int> counts;
counts[item] += 1;
counts[item] += 1;
int count = counts[item];
std::cout << "item=" << item << std::endl;
std::cout << "count=" << count << std::endl;
return 0;
}
item ← apple, counts ← (empty), count ← 2
5int main() {6 std::string item→ apple = "apple"; //@item="pear", "apple"78 std::map<std::string, int> counts→ (empty);9 counts(empty)[itemapple] += 1;10 counts(empty)[itemapple] += 1;1112 int count→ 2 = counts(empty)[itemapple];1314 std::cout << "item=" << itemapple << std::endl;15 std::cout << "count=" << count2 << std::endl;16 return 0;17}outputitem=apple count=2
item ← pear, counts ← (empty), count ← 2
5int main() {6 std::string item→ pear = "pear";78 std::map<std::string, int> counts→ (empty);9 counts(empty)[itempear] += 1;10 counts(empty)[itempear] += 1;1112 int count→ 2 = counts(empty)[itempear];1314 std::cout << "item=" << itempear << std::endl;15 std::cout << "count=" << count2 << std::endl;16 return 0;17}outputitem=pear count=2