2010-02-25 3 views
0

я теряюсь в этом, у меня есть класс, который имеет три векторных объектов,позволяют использовать векторные функции, кроме одного?

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

я хочу иметь (унаследуют) все вектор-функции (кнопочный, размер и т.д.), но КРОМЕ функции «стирают»

на первый я сделал объекты общественности, но затем сотрите был доступен, я Donno как наследование работы с шаблоном векторов

, когда я сделал объекты частной .. я нашел мой сам перегружать все векторные функции снова для каждого объекта что у меня есть, это также плохо для производительности, поскольку 2 функции wi буду называть вместо одного,

производительность в моей программе очень важное требование, поскольку было бы тысячи расчетов каждой функции .. и удвоение этого числа не будет хорошо для него вообще ..

ответ

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 :: вектор получил свое название), смотрите в библиотеке, такие как Blitz++.

+0

благодарит много людей, это было действительно информативно, и я обязательно узнаю о Blitz ++ –