c++ - 访问另一个类包含的 std::vector

标签 c++ vector stl

我对 C++ 还是比较陌生,边学边学,我对向其使用者公开 vector 的“最佳”方式是什么感到困惑。我不担心性能。

我有一个包含原始数据 vector 的类。我还有其他类需要使用和处理该 vector 。

通过阅读此处的其他帖子,我不确定是返回对 vector 的 const 引用还是公开 const 迭代器,因为没有消费者会修改 vector 。

一种方法比另一种更好吗?是否有其他选择或其他事项需要考虑?

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);
};

最佳答案

它:

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

它:

Something* processRawData(const RawNumberContainer&);

关于c++ - 访问另一个类包含的 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17787182/

相关文章:

c++ - 神奇分配的链表中的头指针,不应该工作但确实如此

c++ - 分配和填充大型数组

c++ - 间歇性 "Vector iterator not dereferencable"

c++ - 如何在 std::map 中存储混合类型项目?

c++ - C++列表/队列的顶部返回值

c++ - 如何使用 QT 从 SVG 文件中获取值

c++ - 什么时候调用成员数据构造函数?

c++ - 从 vector C++ 中的父类(super class)调用子类方法

c++ - 如何访问 std::vector 类型的成员

c++ - 关联容器的迭代器不依赖于比较器模板参数