Блог пользователя mrChest

Автор mrChest, 5 месяцев назад, По-русски

Почему-то данный код выводит 1:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

#define ordered_multiseti tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>

using namespace std;
using namespace __gnu_pbds;

main(){
    ordered_multiseti st;
    st.insert(13);
    st.insert(15);
    cout << (st.find(13)==st.end());
}

Пробовал C++11 и C++17, как ISO, так и GNU.

Бред какой-то. С ordered_set всё нормально. Кто-нибудь знает почему так?

P. S. Не надо говорить, что можно использовать (st.order_of_key(13) == -1 ? st.end() : st.find_by_order(st.order_of_key(13))), я хочу разобраться в этом

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
5 месяцев назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

так less_equal компаратор вообще сломанный, например вот, лучше юзать less<pair<int, int>> вместо less_equal, второй параметр пары будет просто количество элемента и его можно например в мапчике поддерживать