Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Dark2012
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 43
#1

Шаблонный класс: матрица - C++

11.04.2012, 10:17. Просмотров 2051. Ответов 6
Метки нет (Все метки)

Хочу запилить класс matrix - двумерный массив с помощью vector

пишу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
using namespace std;
 
class matrix
 
{
  private:
   vector< vector<int> > arr;
 
//Конструктор
 
  public:
   matrix(int rows, int cols) : arr(rows) 
    {
      for (int i = 0; i < rows; ++i)
        arr[i].resize(cols);
    }
   
//остальное писать не буду
 
}
все круто все работает.....


теперь хочу запилить шаблончик, чтобы не только интовые массивы можно было делать а float, double

пишу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
using namespace std;
 
template <class T>
class matrix
 
{
  private:
   vector< vector<T> > arr;
 
//Конструктор
 
  public:
   matrix(int rows, int cols) : arr(rows) 
    {
      for (int i = 0; i < rows; ++i)
        arr[i].resize(cols);              // - ВСЕ  - здесь метод resize уже не определен - ПОЧЕМУ?????
    }
   
//остальное писать не буду
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 10:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблонный класс: матрица (C++):

Создайте шаблонный класс матрица - C++
Создайте шаблонный класс матрица. Необходимо реализовать динамическое выделение памяти, очистку памяти, заполнение матрицы с клавиатуры,...

Выделение памяти. Создать шаблонный класс-матрица - C++
Я считываю с файла значения от 1 до 1000000,а потом в методе &quot;copycolumn&quot; копирую одну колонку из матрицы в другой массив. Программа...

Реализовать шаблонный класс "Матрица" (шаблоны классов и функций) - C++
Написать код программы на С++ Разработать шаблонные функции и классы. класс МАТРИЦА. Для класса реализовать: конструктор с параметрами...

Класс Matrix: реализовать шаблонный класс для двумерных массивов - C++
Доброго времени суток. У меня вопрос: я создал класс Array со внутренним динамическим массивом и объекты этого типа смог создать и я ими...

Шаблонный класс и класс одномерный массив - C++
Задание: протестировать класс шаблон, с обычными типами данных я понял как делать, а как передать в шаблон свой класс я не понял. ...

Переделать класс в шаблонный класс - C++
Как данный процесс проделать? Я попробовал так по синтаксису из учебника: #include &lt;iostream&gt; #include &lt;fstream&gt; using...

6
ForEveR
В астрале
Эксперт С++
7984 / 4743 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.04.2012, 10:26 #2
Dark2012, Что значит "не определен"? Конкретнее пожалста.
0
Dark2012
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 43
11.04.2012, 10:35  [ТС] #3
ну т.е у arr[i]. - нету никаких методов я, вообще не могу понять почему....,

Добавлено через 1 минуту
подробнее - не знаю как пишу arr[i] - нажимаю "." - ниче не появляется - прописываю вручную resize - там написано <unknow><unnamed>::resize
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.04.2012, 10:45 #4
Вроде все в порядке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <vector>
template <class T>
class matrix
 
{
  private:
   std::vector< std::vector<T> > arr;
 
  public:
   matrix(int rows, int cols) : arr(rows)
    {
      for (int i = 0; i < rows; ++i)
        arr[i].resize( cols );  
    }
 
   void output() const {
      for ( std::size_t i = 0; i < arr.size(); i++ ) {
         for ( std::size_t j = 0; j < arr[ i ].size(); j++ )
            std::cout << arr[ i ][ j ] << ' ';
         
         std::cout << std::endl;
      }
   }
 
};
 
int main() {
   matrix< int > b( 2, 2 );
 
   b.output();
 
   return 0;
}
Вывод
0
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
11.04.2012, 10:48 #5
Dark2012,

class NAME
{
};
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.04.2012, 10:50 #6
Так он же не весь код вроде выложил Не думаю что была пропущена ; Или была? Oo
0
Dark2012
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 43
11.04.2012, 11:06  [ТС] #7
хммм.... действительно работает - VS компилирует и упорно продолжает "невидеть" и возле resize пишет <unknow><unnamed>::resize...когда к нему подводишь мышкой

в общем ладно работает ну и хорошо))
СПасибо
0
11.04.2012, 11:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2012, 11:06
Привет! Вот еще темы с ответами:

шаблонный класс - C++
реализован согласно &quot;Создание конструкторов и деструктора&quot; на шаблон класса с параметром -Тип данных в файле, редактируется (байт / слово /...

Шаблонный класс - C++
Ребята, объясните пожалуйста, как работает шаблонный класс, своими словами, на скромном маленьком примерчике. Заранее благодарю.

Шаблонный класс - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T&gt; class Vector{ private: int size, capacity; T* data; public: ...

Шаблонный класс - C++
Подскажите как указать реализацию методов для шаблонного класса template &lt;class T_machine&gt; class hospital_room { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.