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

Перегрузка двойного индексного оператора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ Найти символ в строке http://www.cyberforum.ru/cpp-beginners/thread795334.html
Задача:напишите программу,подсчитывающую количество определённой буквы в строке.строка и буква вводится пользователем. сам мучаюсь третий день не могу понять как сделать нормально.
C++ Указатель и ссылка Почему выгодней использовать указатель а не ссылку при использовании массивов? http://www.cyberforum.ru/cpp-beginners/thread795331.html
Алгоритмы сортировки: прямые, улучшенные (Сортировка с помощью включений с уменьшающимися расстояниями (сортировка Шелла)) C++
Задание 2. Сортировка с помощью включений с уменьшающимися расстояниями (сортировка Шелла). Методические указания к выполнению задания 2 Описать алгоритм сортировки. Проанализировать его эффективность. Написать программу сортировки данных с использованием указанного алгоритма. Сравнить эффективность улучшенного алгоритма с прямым алгоритмом из задания 1. Зарание большое спасибо за...
Для сохранения данных задания 1 использовать динамическую структуру – бинарное дерево. Выбрать все записи о невостребованных учебниках C++
Задание 2. Для сохранения данных задания 1 использовать динамическую структуру – бинарное дерево. Выбрать все записи о невостребованных учебниках. Методические указания к выполнению задания 2 При выполнении задания для организации поиска необходимой информации использовать рекурсивный обход дерева. Зарание большое спасибо за вашу помощь.
C++ преобразование матрицы http://www.cyberforum.ru/cpp-beginners/thread795223.html
помогите решить.преобразовать заданную матрицу x(p,k) таким образом чтобы первый элемент каждого столбца был заменен произведением последующих элементов того же столбца:help:
C++ Определить месторасположение точки по отношению к кругу Задан круг с центром в точке О(x0,y0) и радиусом R0 и точка А(x1,y1).Определить месторасположение точки по отношению к кругу(находится внутри круга,вне его или лежит на окружности). Добавлено через 14 минут Через cin и cout пожалуста. подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
26.02.2013, 15:36     Перегрузка двойного индексного оператора
Ключевой кусок кода:
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
61
template <class T>
class Matrix
{
    // здесь детали реализации матрицы...........
    
    // это позволит обращаться к матрице: m[i][k] = ...;
    template<class U>
    class Helper
    {
        template<typename U> class Matrix;
 
        Matrix<U>&   matrix;
        unsigned int i;
 
        Helper(Matrix<U>& _mc, unsigned int _i): matrix(_mc), i(_i) {};
        Helper(const Matrix<U>& _mc, unsigned int _i): matrix(const_cast<Matrix&>(_mc)), i(_i) {};
        Helper(const Helper&);
        Helper& operator=(const Helper&);
 
        friend class Matrix<U>;
 
    public:
        U& operator[](unsigned int k) const
        {
            assert(i < matrix.rows);
            assert(k < matrix.cols);
            if (i >= matrix.rows || k >= matrix.cols)
                throw std::range_error("Range error in Matrix::Helper::operator[]() const");
 
            return matrix.data[matrix.cols * i + k];
        }
 
        U& operator[](unsigned int k)
        {
            assert(i < matrix.rows);
            assert(k < matrix.cols);
            if (i >= matrix.rows || k >= matrix.cols)
                throw std::range_error("Range error in Matrix::Helper::operator[]()");
 
            return matrix.data[matrix.cols * i + k];
        }
    };
 
    Helper<T> operator[](unsigned int i) const
    {
        assert(i < rows);
        if (i >= rows)
            throw std::range_error("Range error in Matrix::operator[]() const");
 
        return Helper<T>(*this, i);
    }
 
    Helper<T> operator[](unsigned int i)
    {
        assert(i < rows);
        if (i >= rows)
            throw std::range_error("Range error in Matrix::operator[]()");
 
        return Helper<T>(*this, i);
    }
};
 
Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru