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.