@Leevz

Как задать размеры матрицы (вектора векторов) в C++ после ее создания?

В классе есть матрица (std::vector<std::vector<int>> m_matrix), требуется на основе двух аргументов в конструкторе задать матрице размеры. Как это реализовать без .resize()?
  • Вопрос задан
  • 1706 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Matrix
#include<iostream>
#include<vector>
using namespace std;

template<typename T>
class Matrix
{
  size_t cols;
  size_t rows;
  vector<vector<T>> m_matrix;
public:
  Matrix(size_t c, size_t r) : cols{c}, rows{r}, m_matrix{}
  {
    m_matrix.reserve(cols);
    for(auto i{0}; i < cols; ++i)
    {
      m_matrix.emplace_back(vector<T>(rows));
    }
  }
  auto begin()
  {
    return m_matrix.begin();
  }
  auto end()
  {
    return m_matrix.end();
  }
  vector<T>& operator[](size_t i)
  {
    return m_matrix[i];
  }
//...
};

int main()
{
  Matrix<int> m(10,10);

  m[5][5] = 5;

  for(auto& c : m)
  {
    for(auto& e : c)
    {
      cout << e << ' ';
    }
    cout << endl;
  }
    return 0;
}

OUT:
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 5 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0


только зачем? Eсли есть (как минимум):
std::valarray
И
std::slice

boost::numeric::ublas
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@LDenS
vector<vector<int>> m_matrix(r, vectro<int>(c));
где r и c количество строк и столбцов соответственно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы