разрешить использование векторных функций, кроме одной? - PullRequest
0 голосов
/ 25 февраля 2010

Я потерян в этом, у меня есть класс, который имеет три векторных объекта,

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

Я хочу иметь (наследовать) все функции вектора (push, size и т. Д.), Но ЗА ИСКЛЮЧЕНИЕМ функции «erase»

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

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

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

1 Ответ

1 голос
/ 25 февраля 2010

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

Кроме того, у вас есть состав, а не наследство.

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 ++ .

...