gpt4 book ai didi

c++ - vector 、Size_type 和封装

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:21 27 4
gpt4 key购买 nike

我有一个类,它有一个类型为 vector< A*> 的私有(private)数据成员.

该类有两个实际使用vector<A*>::size_type 的公共(public)方法:

  1. 返回 vector 中元素个数的方法
  2. 方法通过索引返回 vector 中的元素

我可以将以下 typedef 添加到类的公共(public)部分:

typedef vector::size_type SIZE_t;

但是恕我直言,它暴露了太多关于类实现的细节。

另一种方法是使用 size_t .

你怎么看?

最佳答案

我会在类里面使用 typedef。原因是对于std::vector,size 类型是std::size_t,但是如果你之后改变代码使用一个容器(手卷),它的大小类型不是 std::size_t 重新定义 typedef 就足够了。

使用该 typedef 不会暴露任何实现细节,它实际上有助于封装。 typedef 中的重要元素是本地名称,而不是它的定义。

for ( mytype::size_type i = 0; i < myelement.size(); ++i )

在上面的 for 循环中,用户代码不知道 size_type 是有符号类型还是无符号类型,它只是有效。您可以更改您的实现,只要您更新 typedef,以前的代码将在没有签名/未签名比较警告的情况下编译。 typedef 实际上有助于封装。

关于c++ - vector 、Size_type 和封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com