Я пытаюсь построить общую матрицу на основе уже построенного мною общего вектора. Я хочу иметь вектор векторов (каждый внутренний вектор представляет собой строку). По какой-то причине это не работает:
template <typename T>
class matrix : vector<vector<T>>{...}
Я получаю такую ошибку:
error: 'class vector<T>' is not a valid type for a template non-type parameter
Я пытался изучить шаблоны шаблонов, но не мог понять, как заставить их работать. Любая помощь приветствуется. Спасибо!





Это должно сработать для вас:
#include <vector>
template <typename T>
class matrix : public std::vector<std::vector<T>>
{
};
int main()
{
matrix<int> m;
m.push_back({});
m[0].push_back(0);
m[0].push_back(1);
m[0].push_back(2);
m.push_back({});
m[1].push_back(3);
m[1].push_back(4);
m[1].push_back(5);
m.push_back({});
m[2].push_back(6);
m[2].push_back(7);
m[2].push_back(8);
return 0;
}
Однако я предлагаю изучить тему "Правильный способ создания матрицы на C++", которая очень близка к тому, что вы хотите реализовать.
Измените тип возврата основного с void на int. В противном случае компиляция не удастся. Попробуйте свой код на Wandbox. wandbox.org/permlink/w1sJ8gxwZPPqaQMS
return 0; отсутствует.
@KunalPuri, исправлено. Спасибо!
Невозможно воспроизвести: ссылка на сайт, предоставьте минимальный проверяемый образец, который демонстрирует эту ошибку.