Обсуждение:Полезные заметки/Список языков программирования

Материал из Викитропов
Перейти к навигации Перейти к поиску
« Давайте пока не писать:
  • устаревшие, неиспользуемые и не предназначенные для реального использования языки
»
— Mercury13

произведение может быть историческое (Idot (обс.) 18:46, 15 октября 2024 (MSK))

  • А одна строчка, и та в орфоошибках — стоит? --Mercury13 (обс.) 03:46, 16 октября 2024 (MSK)
  • А про Rust — меня смешит вообще ссылка, когда пуританин Rust хочет неизменяемых данных в игровом-то движке, который по определению устроен так, что чьё-то состояние меняется. --Mercury13 (обс.) 04:27, 16 октября 2024 (MSK)

1) "Неизменный словарь" в C++ это что? std::map уже сделали constexpr? 2) "Сложно, но можно добавить к нему структуры для быстрого поиска" это что? Велосипедится оно как бэ, достаточно просто. 3) Велосипедится на constexpr. Я не особо понял, почему его нужно убирать из статьи.

template<typename T,typename...Args>
constexpr auto generateDict(const T&compare,Args&&...args)
{
    std::array dict{args...};
    std::sort(dict.begin(),dict.end(),compare);
    return dict;
}
constexpr bool compare(const char*a,const char*b){
    return std::char_traits<char>::compare(a,
                                           b,
                                           std::min(std::char_traits<char>::length(a)+1,std::char_traits<char>::length(b)+1))<0;
}
int main()
{
    //constinit гарантирует что все будет вычислено на стадии компиляции
    static constinit auto dict=generateDict(
                [](auto a,auto b){return compare(a.first,b.first);},
                std::pair<const char*,int>{"one",1},
                std::pair<const char*,int>{"two",2},
                std::pair<const char*,int>{"three",3},
                std::pair<const char*,int>{"zero",0});
    std::cout<<std::lower_bound(dict.begin(),dict.end(),"three",[](auto a,auto b){return compare(a.first,b);})->second<<std::endl;
    return 0;
}

Kuudere Lover (обс.) 16:52, 19 октября 2024 (MSK)