Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189

Не получается использовать итераторы вектора в качестве итераторов своего класса

05.02.2015, 17:10. Показов 3672. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу класс матрицы, основанный на векторе. Хочу его сделать stl-совместимым. Т.к. класс основан на векторе, решил возвращать итераторы вектора, но алгоритмы не работают.
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
    //Matrix.hpp
    using std::vector;
    template <typename T>
    class Matrix
    {
    public:
 
        typedef typename vector<T>::iterator iterator;
        typedef typename vector<T>::const_iterator const_iterator;
        typedef typename vector<T>::reverse_iterator reverse_iterator;
        typedef typename vector<T>::const_reverse_iterator const_reverse_iterator;
 
        iterator begin() { return data.begin(); }
        const_iterator begin() const { return data.begin(); }
        const_iterator end() const { return data.end(); }
 
        reverse_iterator rbegin() { return data.rbegin(); }
        const_reverse_iterator rbegin() const { return data.rbegin(); }
        const_reverse_iterator rend() const { return data.rend(); }
 
 
        Matrix() : rows(0), cols(0) {}
        Matrix(size_t Rows, size_t Cols)
            :rows(Rows), cols(Cols)
        {
            data.resize(rows*cols);
        }
        //........................................................................................................................
    private:
        vector<T> data;
        size_t rows;
        size_t cols;
C++
1
2
3
4
5
6
7
8
9
    //main.cpp
    #include <algorithm>
    #include "Matrix.hpp"
    using namespace std;
    //......................................................
        Matrix<int> m(10, 5);
        m.print();
        fill(m.begin(), m.end(), 42); //Вот тут возникает ошибка компиляции
    //.......................................................
Текст ошибки:
Code
1
2
3
Ошибка    2   error C2782: void std::fill(_FwdIt,_FwdIt,const _Ty &): в шаблон параметр "_FwdIt" неоднозначен
 
3   IntelliSense: отсутствуют экземпляры шаблон функции "std::fill", соответствующие списку аргументов типы аргументов: (std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>, std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<int>>>, int)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2015, 17:10
Ответы с готовыми решениями:

Научить метод принимать в качестве аргумента объект своего класса и дочерних классов
Как научить метод принимать в качестве аргумента объект своего класса и дочерних классов? Как их передавать при вызове метода?

При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса
Описал первый класс,затем - описал второй класс, используя первый,и когда начал перезагружать оператор для второго класса, вылезла...

Не получается создать метод для вывода вектора из класса
Здраствуйте, 2 день смотрю уроки по классам, но все бестолку. У меня имеется класс pricelist в котором есть вектор list. По сути нужно...

21
 Аватар для orange_fox
34 / 34 / 8
Регистрация: 06.04.2014
Сообщений: 189
05.02.2015, 21:39  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от NotNot Посмотреть сообщение
О, это как так получается?
C++
1
2
3
4
5
6
7
//Magic is real!
        int arr[3][4] = {
                { 0, 1, 2, 3 },
                { 4, 5, 6, 7 },
                { 8, 9, 10, 11 }
        };
        cout << arr[1][2] << endl; //6
1
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
05.02.2015, 21:43
А, ну да, это я дурак.

Почему то подумал про единицу как про индекс, а про 2 как про второй элемент по счету.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2015, 21:43

итераторы вектора
#include &lt;tchar.h&gt; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { vector...

Как использовать stl для своего класса(для пользовательского типа данных)
Мне бы пример какой-нибудь а то в инете ищу ничего не могу найти, кроме базовых типов данных

Написать функцию для класса, возращающую данный из вектора обьектов класса по итератору вектора
День=добрый как написать функцию для класса возращающую данный из вектора обьектов класса по итератору вектора?? стока запроса: ...

Почему получается использовать методы одного класса в другом, хотя классы не связаны наследованием
Добрый день Когда читала про наследование классов уяснила для себя - оно нужно в том числе, чтобы классы могли...

Использование своего объекта своего класса внутри другого
Здравствуйте. Есть класс для работы с матрицами. Все работает. Теперь нужно создать другой класс, где полями будут являться переменные -...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru