如何获得C ++类成员向量的大小?

p

我有一个具有type成员的类std::vector在某些地方,我需要另一个类中该向量的大小。因为该成员是私有成员,所以我创建了一个getter来返回它。在检查代码时,我想到一个问题:先调用吸气剂然后再size()创建一个“尺寸吸气剂”是否更好

这是我的课:

class MyClass
{
private:
  std::vector< int > m_myVec;

public:
  std::vector< int > getMyVec() const { return m_myVec; }
  // Shall I create:
  // std::size_t getMyVecSize() const { return m_myVec.size(); }

  // ... other function
};

在代码的其他部分,我做了:

std::size_t sz = myClsObj.getMyVec().size(); // or
if (myClsObj.getMyVec().size() > 5) { /*...*/ }

这样做是一种好习惯,还是我将创建并称为“ size getter”?


我既需要向量(在代码的其他部分,我称之为吸气剂),也需要它的大小。因此,选择保留其中一个吸气剂是没有意义的。

另一个事实是我正在使用C ++ 11,因此无需返回const引用。

基于C ++ 11:如果我调用,不返回向量而是返回它的大小是否很聪明myClsObj.getMyVec().size()

BartoszKP

您可以参考“不要问”原则。这里可能有些混乱,因为从技术上讲两个版本都在“索要”某种东西。但是重点不是要使用getter来检索类的实现细节,然后对它执行一些操作,而是要告诉类做所需的工作,在这种情况下,就是获取大小。

这也与Demeter定律有关在此链接中以令人敬畏的方式形象化了返回整个向量的方法,并包含以下内容:

[...”即为1.95美元。” 此时,自然地,我脱下裤子,那个家伙开始对我大喊警察和不雅暴露的消息。我很困惑,我说:“看,我只是想付给你-我给你我的裤子,你会在我的口袋里翻腾,直到找到我的钱包,然后掏出钱包去找钱。 。

“大小获取器”方法涉及一种更自然的方法,即从裤子中取出钱包并付款:-)

这也是直接的最基本的概念之一来OOP -封装简而言之,其目的是向外界隐藏(封装)尽可能多的类实现细节。更少的耦合为您将来提供了更大的灵活性。如果这听起来太抽象或模糊,请不要担心。最终,每个程序员(包括我在内的几乎所有我遇到的程序员)都到了一个地步,每一次所谓的简单更改都必须紧跟着在遥远的代码部分进行大量修补。轻描淡写耦合的报复使您想起这个规则,并永远记住它;)

最后,通常您不创建代表包装矢量或类似内容的类。向量仅仅是一种技术。通常,这样的类表示某些特定元素的集合,这些元素在逻辑级别上具有名称所以,大部分时间它不是.getTheSizeOfMyInnerVector,而是.getRecordCount.getNumberOfStudents等这些类的客户甚至不需要知道,有一个std::vector内部。没关系,只要该类处理其维护某物集合的任务即可例如,上述灵活性在这种情况下可能意味着,您可以切换到其他容器,而不必担心您的类的客户端。而且无需遍历代码中可能使用该类的数千个地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C ++ 11中返回类成员向量

来自分类Dev

如何在C ++中将大小不确定的多维数组作为类的成员?

来自分类Dev

c ++ 11向量作为类成员的线程

来自分类Dev

如何在类定义中初始化向量成员变量?

来自分类Dev

如何重构包含向量的非指针类成员?

来自分类Dev

如何在类模板的构造函数中初始化向量成员变量

来自分类Dev

如何在C ++中获得类型的大小?

来自分类Dev

C ++ 03通过构造函数将向量移动到类成员中(移动语义)

来自分类Dev

在C ++中的类中定义向量的大小

来自分类Dev

如何使用多态从基类访问派生类向量成员?

来自分类Dev

动态调用向量中所有对象的C ++类成员

来自分类Dev

如何获得成员函数指针的类?

来自分类Dev

C ++访问抽象类指针向量的子类的成员

来自分类Dev

C ++类,数组成员的大小由CTOR传递

来自分类Dev

导致奇怪行为的类的成员函数中的C ++指针附加向量

来自分类Dev

C ++向量作为类成员与函数

来自分类Dev

如何在C ++中以最佳方式遍历类成员向量的元素?

来自分类Dev

如何获得对类向量的输入?

来自分类Dev

C ++特征向量在类编译时推断向量大小

来自分类Dev

如何获得Eclipse CDT从数据成员生成C ++类构造函数?

来自分类Dev

向量C ++向量的大小

来自分类Dev

作为类成员的智能指针的C ++ 11索引向量

来自分类Dev

如何使用多态性从基类访问派生类向量成员?

来自分类Dev

如何获得通用函数指针作为C ++类的私有成员?

来自分类Dev

c ++:类实例的向量,按类成员值搜索失败

来自分类Dev

C ++类,数组成员的大小由CTOR传递

来自分类Dev

如何使用C ++获得文件的实际大小?

来自分类Dev

C++:调用成员函数时在指针向量中无效使用抽象类

来自分类Dev

如何访问作为类成员变量的对象向量的成员变量?

Related 相关文章

  1. 1

    如何在C ++ 11中返回类成员向量

  2. 2

    如何在C ++中将大小不确定的多维数组作为类的成员?

  3. 3

    c ++ 11向量作为类成员的线程

  4. 4

    如何在类定义中初始化向量成员变量?

  5. 5

    如何重构包含向量的非指针类成员?

  6. 6

    如何在类模板的构造函数中初始化向量成员变量

  7. 7

    如何在C ++中获得类型的大小?

  8. 8

    C ++ 03通过构造函数将向量移动到类成员中(移动语义)

  9. 9

    在C ++中的类中定义向量的大小

  10. 10

    如何使用多态从基类访问派生类向量成员?

  11. 11

    动态调用向量中所有对象的C ++类成员

  12. 12

    如何获得成员函数指针的类?

  13. 13

    C ++访问抽象类指针向量的子类的成员

  14. 14

    C ++类,数组成员的大小由CTOR传递

  15. 15

    导致奇怪行为的类的成员函数中的C ++指针附加向量

  16. 16

    C ++向量作为类成员与函数

  17. 17

    如何在C ++中以最佳方式遍历类成员向量的元素?

  18. 18

    如何获得对类向量的输入?

  19. 19

    C ++特征向量在类编译时推断向量大小

  20. 20

    如何获得Eclipse CDT从数据成员生成C ++类构造函数?

  21. 21

    向量C ++向量的大小

  22. 22

    作为类成员的智能指针的C ++ 11索引向量

  23. 23

    如何使用多态性从基类访问派生类向量成员?

  24. 24

    如何获得通用函数指针作为C ++类的私有成员?

  25. 25

    c ++:类实例的向量,按类成员值搜索失败

  26. 26

    C ++类,数组成员的大小由CTOR传递

  27. 27

    如何使用C ++获得文件的实际大小?

  28. 28

    C++:调用成员函数时在指针向量中无效使用抽象类

  29. 29

    如何访问作为类成员变量的对象向量的成员变量?

热门标签

归档