Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #2
    Usa il metodo lower_bound per cercare il primo elemento che inizia con 3, e incrementa l'iteratore finché la chiave continua ad iniziare con il prefisso; la cosa si può facilmente incapsulare in un paio di funzioni.
    codice:
    bool startswith(const std::string &s, const std::string &prefix) {
        return s.rfind(prefix, 0)==0;
    }
    
    template<typename VT>
    std::size_t count_prefix(const std::map<std::string, VT> &m, const std::string &prefix) {
        std::size_t count=0;
        std::map<std::string, VT>::const_iterator it = m.lower_bound(prefix), end=m.end();
        while(it!=end && startswith(it->first, prefix)) {
            ++it;
            ++count;
        }
        return count;
    }
    Ultima modifica di MItaly; 29-11-2015 a 16:02
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.