【问题标题】:Custom vector container using STL vector使用 STL 向量的自定义向量容器
【发布时间】:2020-06-15 11:04:39
【问题描述】:

我有一个这样定义向量的代码

typedef std::vector<double> my_vec

和一个矩阵

typedef std::vector<my_vec> matrix

是否可以用自定义类替换此定义,该类保留 STL 向量的所有特性(不会破坏现有代码),但也可以使用新成员进行扩展。

事实上,我正在寻找的是简单地为每个向量添加一个 bool 标志。

【问题讨论】:

  • 是的,您应该能够从std::vector 继承。相关问题:Thou shalt not inherit from std::vector.
  • 重构工具:)。您也可以考虑通过添加 bool 将旧类型转换为新类型,尤其是在旧代码都不关心额外成员的情况下。
  • 感谢您的提示。我只是试了一下,它......几乎可以工作。看起来我无法将向量推回矩阵。如果您需要,我可以发布自定义矢量类代码。
  • 忽略我之前的评论。一切正常。问题出在其他地方。感谢您的提示。

标签: c++ oop stl


【解决方案1】:

根据我收到的提示,这是我创建的自定义类。

 template <typename T>                                                                                                                                                                                    
 class fp_vec : public std::vector<T> {                                                                                                                                                                   
     public:                                                                                                                                                                                              
         using std::vector<T>::vector;                                                                                                                                                                    
         bool n = false;                                                                                                                                                                         
 };  

和类型定义

typedef fp_vec<double> my_vec
typedef fp_vec<my_vec> matrix

我知道这并不理想,因为std::vector 没有虚拟析构函数,所以动态分配很严重,不在这里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2010-12-15
    • 2020-10-15
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多