Форум программистов, компьютерный форум CyberForum.ru

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

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

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

11.04.2012, 10:17. Просмотров 1798. Ответов 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 уже не определен - ПОЧЕМУ?????
    }
   
//остальное писать не буду
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 10:17     Шаблонный класс: матрица
Посмотрите здесь:

Выделение памяти. Создать шаблонный класс-матрица - C++
Я считываю с файла значения от 1 до 1000000,а потом в методе &quot;copycolumn&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++
реализован согласно &quot;Создание конструкторов и деструктора&quot; на шаблон класса с параметром -Тип данных в файле, редактируется (байт / слово /...

Шаблонный класс - C++
День добрый. Пишу матричный калькулятор на шаблонном классе. Хочу добиться того, чтобы можно было оперировать с матрицами всех численных...

Шаблонный класс - C++
Я запутался с шаблонами. Не пойму никак как вызвать конструктор с введенным в функции check_int() значением и как дальше вызвать функции...

Шаблонный класс - C++
Как его реализовать??? Смысл я понимаю, но вот как записать...не знаю:cry:

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

Добавлено через 1 минуту
подробнее - не знаю как пишу arr[i] - нажимаю "." - ниче не появляется - прописываю вручную resize - там написано <unknow><unnamed>::resize
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 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;
}
Вывод
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
11.04.2012, 10:48     Шаблонный класс: матрица #5
Dark2012,

class NAME
{
};
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
11.04.2012, 10:50     Шаблонный класс: матрица #6
Так он же не весь код вроде выложил Не думаю что была пропущена ; Или была? Oo
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2012, 11:06     Шаблонный класс: матрица
Еще ссылки по теме:

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

Указатель на шаблонный класс - C++
Есть ли возможность инициализировать указатель на класс с шаблоном, но не указав при этом тип, ну т.е. написать не так Value_Class...

Шаблонный класс Стек - C++
прошу помочь разобраться с кодом. вопросы выделил по ходу кода. #ifndef _STACKNODE_H_ #define _STACKNODE_H_ #include &lt;string&gt; ...

Примитивный шаблонный класс С++ - C++
Создайте пожалуйста любой шаблонный класс на начальном (или &quot;примитивном&quot;) уровне языка. Для понимания сделайте с розьяснением...

Дружественный шаблонный класс - C++
Доброго времени суток. Есть пример из книги (создание списка). Вот код: #ifndef LISTND_H #define LISTND_H template &lt;class...


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

Или воспользуйтесь поиском по форуму:
Dark2012
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 43
11.04.2012, 11:06  [ТС]     Шаблонный класс: матрица #7
хммм.... действительно работает - VS компилирует и упорно продолжает "невидеть" и возле resize пишет <unknow><unnamed>::resize...когда к нему подводишь мышкой

в общем ладно работает ну и хорошо))
СПасибо
Yandex
Объявления
11.04.2012, 11:06     Шаблонный класс: матрица
Ответ Создать тему
Опции темы

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