Как отправить значения карты в класс - PullRequest
0 голосов
/ 25 февраля 2020
#include <iostream>
#include <memory>
#include <initializer_list>
#include <cassert>
#include <map>


template <typename T>
class Matrix
{
    private:
    int i,j;
    T value;
    std::map<std::array<int, 2>,double> Mat;
    public:


    Matrix():i(0),j(0)
    {
        std::cout<<"Empty boi called"<<std::endl;
    }
    Matrix(int row, int column)
    {
       std::cout<<"Main boi called"<<std::endl;
    }
// I'm not really sure where to plug this code in
// In the main function, this code works but not really in class
    for (std::map<std::array<int, 2>,int>::iterator it=Mat.begin(); it!=Mat.end(); ++it)
       {
        i   = it->first[0];
        j   = it->first[1];
        value = it->second;  
         std::cout << "["<< it->first[0] <<","<<it->first[1]<<"]"<< " => " << it->second << '\n';
       }
};


int main()
{
    std::map<std::array<int, 2>,int> Mat;
    Mat[{1,5}]=20;
    Mat[{2,6}]=30;
    for (std::map<std::array<int, 2>,int>::iterator it=Mat.begin(); it!=Mat.end(); ++it)
    std::cout << "["<< it->first[0] <<","<<it->first[1]<<"]"<< " => " << it->second << '\n';

// The same code done in main function is what I want to do in the class

    Matrix<double> M(10,10);
    M{[1,1]} = 3.14; // This returns an error
    return 0;
}

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

...