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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Dark2012
0 / 0 / 0
Регистрация: 03.12.2011
Сообщений: 43
11.04.2012, 10:17     Шаблонный класс: матрица #1
Хочу запилить класс 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++ Шаблонный класс
Переделать класс в шаблонный класс C++
C++ Шаблонный класс
Шаблонный класс C++
C++ Шаблонный класс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 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
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
11.04.2012, 10:48     Шаблонный класс: матрица #5
Dark2012,

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

C++ Выделение памяти. Создать шаблонный класс-матрица
C++ Шаблонный класс
C++ шаблонный класс

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

Или воспользуйтесь поиском по форуму:
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     Шаблонный класс: матрица
Ответ Создать тему
Опции темы

Текущее время: 07:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru