Standard Library
Set Membership
std::set tracks unique values and answers membership questions.
set membership
A set is useful when code needs to ask whether a value is present.
Set Membership
set_membership.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <set>
#include <string>
int main() {
std::string role = "editor";
std::set<std::string> writers{"admin", "editor"};
bool canWrite = writers.count(role) > 0;
std::cout << "role=" << role << std::endl;
std::cout << "canWrite=" << canWrite << std::endl;
std::cout << "knownRoles=" << writers.size() << std::endl;
return 0;
}
#include <iostream>
#include <set>
#include <string>
int main() {
std::string role = "guest";
std::set<std::string> writers{"admin", "editor"};
bool canWrite = writers.count(role) > 0;
std::cout << "role=" << role << std::endl;
std::cout << "canWrite=" << canWrite << std::endl;
std::cout << "knownRoles=" << writers.size() << std::endl;
return 0;
}
#include <iostream>
#include <set>
#include <string>
int main() {
std::string role = "admin";
std::set<std::string> writers{"admin", "editor"};
bool canWrite = writers.count(role) > 0;
std::cout << "role=" << role << std::endl;
std::cout << "canWrite=" << canWrite << std::endl;
std::cout << "knownRoles=" << writers.size() << std::endl;
return 0;
}
role ← editor, writers ← (empty), canWrite ← 1
5int main() {6 std::string role→ editor = "editor"; //@role="guest", "admin"78 std::set<std::string> writers→ (empty){"admin", "editor"};9 bool canWrite→ 1 = writers(empty).count(roleeditor) > 0;1011 std::cout << "role=" << roleeditor << std::endl;12 std::cout << "canWrite=" << canWrite1 << std::endl;13 std::cout << "knownRoles=" << writers(empty).size() << std::endl;14 return 0;15}outputrole=editor canWrite=1 knownRoles=2
role ← guest, writers ← (empty), canWrite ← 0
5int main() {6 std::string role→ guest = "guest";78 std::set<std::string> writers→ (empty){"admin", "editor"};9 bool canWrite→ 0 = writers(empty).count(roleguest) > 0;1011 std::cout << "role=" << roleguest << std::endl;12 std::cout << "canWrite=" << canWrite0 << std::endl;13 std::cout << "knownRoles=" << writers(empty).size() << std::endl;14 return 0;15}outputrole=guest canWrite=0 knownRoles=2
role ← admin, writers ← (empty), canWrite ← 1
5int main() {6 std::string role→ admin = "admin";78 std::set<std::string> writers→ (empty){"admin", "editor"};9 bool canWrite→ 1 = writers(empty).count(roleadmin) > 0;1011 std::cout << "role=" << roleadmin << std::endl;12 std::cout << "canWrite=" << canWrite1 << std::endl;13 std::cout << "knownRoles=" << writers(empty).size() << std::endl;14 return 0;15}outputrole=admin canWrite=1 knownRoles=2