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

Ошибка в коде. Шаблоны - C++

Восстановить пароль Регистрация
 
Imba-Crafter
1 / 1 / 0
Регистрация: 13.10.2010
Сообщений: 38
16.03.2011, 09:47     Ошибка в коде. Шаблоны #1
Вот код:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
 
template<class T>
int Negative(const std::vector<std::vector<T> >& vc)
{
    int count=0;
    for(std::vector<std::vector<T> >::const_iterator iter=vc.begin();
    iter != vc.end(); ++iter)
        count+=std::count_if(iter->begin(), iter->end(), std::bind2nd(std::less<T>(), 0));
    return count;
}
 
template<class T>
void printMatrix(const std::vector<std::vector<T> >& vc)
{
    for(std::vector<std::vector<T> >::const_iterator iter=vc.begin(); iter != vc.end(); ++iter)
    {
        std::copy(iter->begin(), iter->end(), std::ostream_iterator<T>(std::cout, " "));
        std::cout<<'\n';
    }    
}
int main()
{
    std::vector<std::vector<int > > intMatr;
    int n=0, m=0;
    std::cout<<"Enter n, m: ";
    std::cin>>n>>m;
    intMatr.resize(n);
    for(int i=0; i<m; ++i)
       intMatr[i].resize(m);
    for(int i=0; i<n; ++i)
    {
        std::cout<<"Enter "<< i <<" row with "<< m <<" elements\n";
        for(int j=0; j<m; ++j)
                        std::cin>>intMatr[i][j];
    }
    std::cout<<"Int matrix\n";
    printMatrix(intMatr);
    std::cout<<Negative(intMatr)<<'\n';
    std::vector<std::vector<double > > doubleMatr;
    n=0, m=0;
    std::cout<<"Enter n, m: ";
    std::cin>>n>>m;
    doubleMatr.resize(n);
    for(int i=0; i<m; ++i)
       doubleMatr[i].resize(m);
    for(int i=0; i<n; ++i)
    {
        std::cout<<"Enter "<< i <<" row with "<< m <<" elements\n";
                for(int j=0; j<m; ++j)
                        std::cin>>doubleMatr[i][j];
    }
    std::cout<<"Double matrix\n";
    printMatrix(doubleMatr);
    std::cout<<Negative(doubleMatr)<<'\n';
    return 0;
}
Сразу говорю, задача не моя. А ошибку выдает на вот эту строчку:
C++
1
std::copy(iter->begin(), iter->end(), std::ostream_iterator<T>(std::cout, " "));
что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 09:47     Ошибка в коде. Шаблоны
Посмотрите здесь:

C++ Шаблоны классов. Ошибка параметра по умолчанию
ошибка при компиляции проги, использущей шаблоны классов C++
Шаблоны (ошибка в коде) C++
C++ шаблоны классов: непонятная ошибка в одном из методов класса
Шаблоны странная ошибка во время компиляции C++
C++ Шаблоны. Найти ошибку в коде
Шаблоны. Ошибка компиляции: "Не удается сопоставить определение функции существующему объявлению" C++
Шаблоны. Ошибка линкера C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dexter
 Аватар для Dexter
284 / 144 / 16
Регистрация: 13.10.2009
Сообщений: 164
16.03.2011, 10:13     Ошибка в коде. Шаблоны #2
Подключите:
C++
1
#include <iterator>
Также меня смущает ниже:
C++
1
2
3
intMatr.resize(n);
for(int i=0; i<m; ++i)
  intMatr[i].resize(m);
По моему в цикле должно быть до n, иначе вылетит за пределы, а также дальше до n используется.
Yandex
Объявления
16.03.2011, 10:13     Ошибка в коде. Шаблоны
Ответ Создать тему
Опции темы

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