Создание вектора векторов для использования в классе и построения графика с использованием CERNROOT - PullRequest
0 голосов
/ 16 июня 2020
• 1000 файл заголовка, поскольку в нем будет определение объекта, который скоро будет упомянут). У меня проблемы с созданием вектора векторов. Я думал, что это было сделано примерно так:
    #include <array>
    #include <vector>


    constexpr int MaxIterations = 101;
    constexpr double aprox_PI = 3.141592653589793238463;

    using PiArray = std::array<double, MaxIterations>;
    using PiMatrix = std::array<PiArray, MaxIterations>;
    using PiVector = std::vector<std::vector<double>> ; //here lies the problem, the ones above work fine.

    class MonteCarloPiCalculator{
        //some stuff goes in here, like function declarations. The definitions are in another file
    }

Таким образом, размер и содержимое вектора можно добавить позже, но также можно определить заранее. Вот как я использую графический инструмент.

auto* gr4 = new TGraph(calc.VectPot.data(), calc.relDiff.data());

Из файла ROOT TGraph я нашел следующее:

TGraph(const TVectorF &vx, const TVectorF &vy); 
TGraph(const TVectorD &vx, const TVectorD &vy);

Это означает, что я могу использовать векторы с float и double ценности в них. Еще до компиляции я получаю это сообщение в Visual Studio:

ни один экземпляр конструктора не соответствует типам аргументов списка аргументов: (const std :: vector *, const std :: vector *)

Как мне go решить эту проблему? Буду признателен за любую помощь, которую смогу получить. Заранее спасибо за ваше время.

1 Ответ

1 голос
/ 16 июня 2020

TGraph (const TVectorD & vx, const TVectorD & vy);

Это ссылки на TVectorD, а не исходные указатели.

...