访问另一个类包含的std::矢量
access to a std::vector contained by another class
我对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);
};
It:
const RawNumberContainer& getRawNumbersConstReference() const { return rawNumbers; }
它:
Something* processRawData(const RawNumberContainer&);
您可以使用:
RawNumberContainer getRawNumbers() const { return rawNumbers; }
通过这种方式,您将确保不能编辑矢量(仅只读访问),并避免在代码中手动声明另一个变量。
相关文章:
- std::矢量保存 只推送最后一个元素
- std矢量内存分配linux与windows编译器
- 比较两个std::矢量/阵列,或者通常比较两个stl连续器
- 视觉 std::矢量无异常:警告 C4530:使用了C++异常处理程序,但未启用展开语义.指定 /EHsc
- 我做了自己的std ::矢量,但我正在产生错误
- std::矢量插入,不知道元素的类型
- std::矢量构造与元素的就地构造
- 适当的方法将对象存储在Std矢量中
- std::矢量容量变得太大了
- STD ::矢量自然线在迭代时安全
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法
- std::矢量大小在保留和填充后不会更新
- std ::矢量引用将在.insert()上复制
- 更换一堆std ::矢量条目
- 正确地将std::矢量读取和写入文件
- std::矢量写/回读会产生乱码
- 如何在调整大小的std::矢量的最后一个元素后面插入
- std::矢量插入错误
- 左修剪一个没有内存拷贝的std::矢量
- 为什么 std::矢量调整大小失败