Nice iterator naming [closed]

1

Come si chiamano i iteratori quando si restituisce un iteratore di inizio e fine da una classe? Senza sembrare clunky, cioè.

Esempio:

typedef std::vector<Idea> Ideas_Type;

Ideas_Type::const_iterator GetIdeasBegin() const;
Ideas_Type::const_iterator GetIdeasEnd() const;

Dovrebbe essere GetIdeasBeginIter? IdeasBegin?

    
posta DanDan 17.07.2012 - 22:01
fonte

2 risposte

2

Non è chiaro dalla tua domanda, ma se stai pensando a qualcosa del genere:

class Brain {
  typedef std::vector<Idea> Ideas; // Not "Ideas_Type".  That's why it's capitalized.
  Ideas::const_iterator firstIdea();
  Ideas::const_iterator lastIdea();
}

Non c'è bisogno di tutto questo. Puoi anche dire

class Brain {
  ...
  const Ideas &ideas();
}

Restituendo un riferimento costante alla raccolta, consente ai chiamanti di elaborare la raccolta come meglio ritengono senza modificarla. Se non vuoi esporre l'intera interfaccia vettoriale, puoi creare una piccola classe come questa:

class my_list<T>: private std::vector<T> {
public:
  // whatever methods you like, including begin(), end(), ...
}

E come questione di stile, salva "ottieni" i metodi per le lingue precedenti.

    
risposta data 18.07.2012 - 00:18
fonte
8

Vorrei imitare la denominazione fatta nell'STL. Ora le tue classi funzionano con molte funzioni integrate.

  • iniziare
  • end
  • rbegin
  • rend
risposta data 17.07.2012 - 22:32
fonte

Leggi altre domande sui tag