2

我对 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);
};
4

2 回答 2

1

它:

const RawNumberContainer& getRawNumbersConstReference() const { return rawNumbers; }

它:

Something* processRawData(const RawNumberContainer&);
于 2013-07-22T13:15:13.457 回答
0

您可以使用:

RawNumberContainer getRawNumbers() const { return rawNumbers; }

这样,您将确保您无法编辑向量(只有只读访问权限)并避免您在代码中手动声明另一个变量。

于 2013-07-22T13:10:36.083 回答