Files
2026-04-19 23:51:58 +08:00

8.6 KiB

std::set empty initialization   cpp set retrieval production

Front

Write C++ to create an empty std::set<int>

Back

std::set<int> s;

std::set initializer list   cpp set retrieval production

Front

Write C++ to create a std::set from initializer list {3, 1, 2}

Back

std::set<int> s = {3, 1, 2};  // contents: {1, 2, 3} (sorted!)

std::set copy constructor   cpp set retrieval production

Front

Write C++ to copy construct a std::set from existing set s2

Back

std::set<int> s1(s2);        // or: s1 = s2;
std::set<int> s1 = s2;

std::set from range   cpp set retrieval production

Front

Write C++ to construct std::set from iterator range of another set

Back

std::set<int> s2(++s1.begin(), s1.end());

std::set C++17 deduction   cpp set retrieval production

Front

Write C++17 deduction guide to create set from another set

Back

std::set s3 = s2;  // deduces std::set<int>

std::set insert return type   cpp set retrieval production

Front

Write C++ to insert 5 into std::set and check if it succeeded

Back

auto [it, success] = s.insert(5);
if (!success) {
    // already exists
}

std::set insert with hint   cpp set retrieval production

Front

Write C++ to insert 5 near begin() as a hint

Back

s.insert(s.begin(), 5);  // returns iterator only (C++11+)

std::set emplace vs insert   cpp set retrieval production

Front

Write C++ to emplace {5, 6} directly into a std::set without copying

Back

s.emplace(5);      // constructs in-place
s.emplace(std::piecewise_construct,
          std::forward_as_tuple(5),
          std::forward_as_tuple());

std::set erase by key   cpp set retrieval production

Front

Write C++ to erase key 5 from std::set and check count removed

Back

size_t n = s.erase(5);  // returns count erased (0 or 1)

std::set erase by iterator   cpp set set retrieval production

Front

Write C++ to erase element at iterator it

Back

it = s.erase(it);  // returns iterator to next element

std::set erase range   cpp set retrieval production

Front

Write C++ to erase all elements from begin() to end()

Back

s.erase(s.begin(), s.end());  // clears entire set

std::set find   cpp set retrieval production

Front

Write C++ to check if key 5 exists in set using find()

Back

if (s.find(5) != s.end()) {
    // found
}

std::set count   cpp set retrieval production

Front

Write C++ to check if key 5 exists using count() (set returns 0 or 1)

Back

if (s.count(5) == 1) {
    // exists
}

std::set contains (C++20)   cpp set retrieval production

Front

Write C++20 to check if key 5 exists using contains()

Back

if (s.contains(5)) {
    // found
}

std::set extract (C++17)   cpp set retrieval production

Front

Write C++ to extract key 5 from set and reinsert it

Back

auto node = s.extract(5);  // removes and returns node_handle
s.insert(std::move(node));

std::set merge (C++17)   cpp set retrieval production

Front

Write C++ to merge elements from set s2 into s1

Back

s1.merge(s2);  // transfers matching elements from s2 to s1

std::set begin/end iterators   cpp set iterators retrieval production

Front

Write C++ to iterate over all elements in std::set

Back

for (const auto& elem : s) {
    std::cout << elem << '\n';
}

// or with iterators:
for (auto it = s.begin(); it != s.end(); ++it) {
    std::cout << *it << '\n';
}

std::set reverse iterators   cpp set iterators retrieval production

Front

Write C++ to iterate backwards through std::set

Back

for (auto it = s.rbegin(); it != s.rend(); ++it) {
    std::cout << *it << '\n';  // prints in descending order
}

std::set const_iterator   cpp set iterators retrieval production

Front

Write C++ to get const_iterator to first element

Back

std::set<int>::const_iterator it = s.cbegin();  // C++11+
auto it = s.cbegin();  // auto also works

std::set lower_bound   cpp set lookup retrieval production

Front

Write C++ to find first element >= 5 in std::set

Back

auto it = s.lower_bound(5);
if (it != s.end() && *it == 5) {
    // found exact match
}

std::set upper_bound   cpp set lookup retrieval production

Front

Write C++ to find first element > 5 in std::set

Back

auto it = s.upper_bound(5);  // skips past all elements == 5

std::set equal_range   cpp set lookup retrieval production

Front

Write C++ to get pair of iterators for elements matching 5

Back

auto [lo, hi] = s.equal_range(5);
// lo = lower_bound(5), hi = upper_bound(5)
if (lo != hi) {
    // found element(s)
}

std::set insert multiple from initializer list   cpp set retrieval production

Front

Write C++ to insert multiple elements {1, 2, 3} at once

Back

s.insert({1, 2, 3});
// or with pair return (C++17):
auto [it, success] = s.insert({1, 2, 3});

std::set key_comp and value_comp   cpp set observers retrieval production

Front

Write C++ to get the comparison object from std::set

Back

std::set<int>::key_compare comp = s.key_comp();
std::set<int>::value_compare vcomp = s.value_comp();  // same for set

std::set empty and size   cpp set capacity retrieval production

Front

Write C++ to check if set is empty and get size

Back

bool b = s.empty();
size_t n = s.size();
size_t max = s.max_size();

std::set clear   cpp set retrieval production

Front

Write C++ to remove all elements from std::set

Back

s.clear();  // equivalent to s.erase(s.begin(), s.end())

std::set swap   cpp set retrieval production

Front

Write C++ to swap contents of two sets

Back

s1.swap(s2);  // or: s1.swap(s2);
std::swap(s1, s2);

std::set O(log n) operations summary   cpp set complexity retrieval understanding

Front

What is the time complexity of insert, find, erase in std::set?

Back

O(log n) for all operations. std::set is implemented as a red-black tree.

std::set properties   cpp set retrieval understanding

Front

What are the key properties of std::set?

Back

  • No duplicate keys (use std::multiset for duplicates)
  • Keys are sorted (ascending by default)
  • Implemented as red-black tree
  • Elements cannot be modified through iterators (const)