允许使用矢量函数除外?

时间:2010-02-25 19:39:37

标签: inheritance vector overloading

我迷失了,我有一个有三个矢量对象的类,

class A
{
    vector<int> h1;
    vector<double> h2;
    vector <int> h3;
}

我希望拥有(继承)所有向量函数(推送,大小等)但是除了“擦除”功能

起初我把对象公之于众,但随后擦除了, 我不知道继承如何使用矢量模板

当我将对象设为私有时...我发现我的自我重载所有向量函数再次为我拥有的每个对象,它也不利于性能,因为将调用2个函数而不是一个,

我的程序中的性能是非常关键的要求,因为每个函数都会进行数千次计算..并且将这个数字加倍并不会对它有好处。

1 个答案:

答案 0 :(得分:1)

你太担心表现太快而且在错误的地方。您为A类编写的方法可以内联,以避免函数调用开销 - 这是 tiny ,几乎肯定不值得担心。

此外,你有成分而不是继承。

struct A {
  void pop_back() { // example function from vector's interface
    h1.pop_back();
    h2.pop_back();
    h3.pop_back();
  }

private:
  vector<int> h1;
  vector<double> h2;
  vector<int> h3;
};

如果您正在对数字序列进行计算量大的计算(std :: vector得到其名称的“数学向量”),请查看Blitz++等库。