私はまだC++に比較的慣れておらず、学習しながら学習しています。ベクトルを消費者に公開する「最良の」方法について混乱しています。性能は気になりません。
のベクトルを含むクラスがありraw data
ます。そのベクトルを消費して処理する必要がある他のクラスがあります。
ここで他の投稿を読むと、ベクターへの参照を返すか、消費者がベクターを変更しないためconst
公開するかがわかりません。const iterators
ある方法は他の方法よりも優れていますか? 他に考慮すべきオプションやその他の事項はありますか?
typedef std::vector<int> RawNumberContainer;
typedef std::vector<int>::const_iterator RawNumberIterator;
class RawData
{
public:
RawData();
void addNumber(int number)
{
rawNumbers.push_back(number);
}
// this?
RawNumberContainer getRawNumbers() { return rawNumbers; }
// or this?
const RawNumberContainer& getRawNumbersConstReference() { return rawNumbers; }
// or this?
RawNumberIterator getRawNumbersBeginning() { return rawNumbers.begin(); }
RawNumberIterator getRawNumbersEnd() { return rawNumbers.begin(); }
private:
RawNumberContainer rawNumbers;
};
class Something;
class RawDataConsumer
{
public:
// ??
Something* processRawData(RawNumberContainer&);
// ??
Something* processRawData(const RawNumberContainer&);
// ??
Something* processRawData(RawNumberIterator begin, RawNumberIterator end);
};