D
В узле есть 3 указателя - left, right, parent...
Size: a a a
D
🎄T
AB
ip
ip
D
AB
ip
🎄T
t
std::set<std::string> ids;Ну короче теперь даже компилит
std::for_each(items.begin(), items.end(), [&](auto &&el) {
if (el.first == "items")
std::visit([&] (auto &&variant_val) {
if constexpr(std::is_same_v<decltype(variant_val), std::string>)
ids.insert(variant_val);
}, el.second);
});
AB
std::find()
(который из algorithm) работает за O(n) для любого контейнера (увидел в видео). И вот вопрос как он std::set/std::map
за O(n) проходит ? Там же RB tree под капотом, разве итераторы и их инкремент/декремент не должен "по правилам" binary search tree происходить ? std::next
такого итератора что означает ? std::set
же не contiguous контейнер, как он знает откуда значение следущее брать ? Если он получает эту инфу от контейнера, то почему std::find()
не сработает за O(logn) ?AB
ПК
🎄T
t
std::set<std::string> ids;Ну короче теперь даже компилит
std::for_each(items.begin(), items.end(), [&](auto &&el) {
if (el.first == "items")
std::visit([&] (auto &&variant_val) {
if constexpr(std::is_same_v<decltype(variant_val), std::string>)
ids.insert(variant_val);
}, el.second);
});
t
🎄T
t
🎄T
std::set<std::string> ids;Ну короче теперь даже компилит
std::for_each(items.begin(), items.end(), [&](auto &&el) {
if (el.first == "items")
std::visit([&] (auto &&variant_val) {
if constexpr(std::is_same_v<decltype(variant_val), std::string>)
ids.insert(variant_val);
}, el.second);
});
s