2010-02-25 35 views
0

我失去了在此,我有一个类,它有三个矢量对象,允许使用除一个之外的矢量功能?

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

我想有(继承)的所有矢量功能(推,大小等),但除“擦除”功能

起初我所做的对象公开,但随后被删除可用, 我唐诺如何继承与载体模板工作

当我创造的对象私有..我发现我自己再次超载的所有矢量功能为每个对象我有,这对性能也不好,因为2功能无线会被调用,而不是一个,在我的程序

性能是非常关键的要求,因为将有成千上万的每个函数的计算..和加倍这个数字将不利于它在所有..

回答

1

你过于担心表现太快而且出现在错误的地方。您为A类编写的方法可以内联,以避免函数调用开销—,这是微小的并且几乎肯定不值得担心无论如何。

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

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; 
}; 

如果你正在做的数字序列(从标准::矢量得名“数学矢量”)计算,重计算,看看一个如Blitz++库。

+0

非常感谢的人,这是非常翔实的,,我一定会学习闪电++ – 2010-02-25 20:21:48

相关问题