访问类中的多个容器
Access to several containers in the class
本文关键字:访问 更新时间:2023-10-16
假设有一个类,它有几个(例如2)容器作为私有成员。有不同种类的begin()
(或at()
)成员函数来访问相应容器的迭代器(或元素)会好吗?
下面是一个小例子:
class Example
{
private:
std::vector<double> A;
std::vector<double> B;
public:
double& A(std::size_t index) { return A.at(index); }
double& B(std::size_t index) { return B.at(index); }
};
我需要这样的访问,因为有一个类请求容器A中的值,还有另一个类请求容器b的内容。一般来说,Example
类可能有两个以上的容器。
这是个好主意还是有更好的解决方案?
感谢编辑
这里是一些额外的信息:容器A
总是保存一些将传递给不同函数的参数,容器B
保存已经将容器A
作为参数传递给函数的返回值。其他可能的容器对A
类之外的任何东西都关心这些向量的内容吗?如果不是,则创建一个成员函数来接受函数指针,并将其与vector一起使用。那你就不用暴露带菌者了。
如果可能有更多,看起来您实际上有某种容器的"列表"。就像你的命名方案A
, B
,…只是枚举它们,这总是表明你应该使用某种容器。那么也许你真的想要一个集装箱的std::vector
s?如果它是一个固定的量,像这样:
std::array<std::vector<double>, N> containers;
如果不固定,则:
std::vector<std::vector<double>> containers;
那么你可以有一个单独的函数来请求容器的索引,然后再请求容器内的索引:
double& get(std::size_t container, std::size_t element) {
return containers[container][element];
}
听起来您需要这样的访问器。如果元素不需要修改,可以考虑在返回值上加上const关键字
const double& getA(std::size_t index) { return A.at(index); }
相关文章:
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 用于访问容器<T>数据成员的正确 API
- 访问者访问变体并返回不同类型时出错
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法访问嵌套类.类的使用无效
- 写入位置0x0000000C时发生访问冲突
- 我们可以访问一个不存在的联盟的成员吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 我的简单if-else语句是如何无法访问的代码
- 从C++dll访问C#中的一行主要参数
- 概念TS检查忽略私有访问修饰符
- 访问被拒绝后,c++中的故障保护代码
- 在c++中访问int到类对象的映射时出错
- 我想访问std::unique_ptr中的一个特定元素
- 为什么示例代码访问IUnknown中已删除的内存
- C++:无法访问声明的受保护成员
- 通过指向指针数组的指针访问子类的属性
- 如何使用单独文件中的派生类访问友元函数对象