Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
37 / 31 / 5
Регистрация: 30.04.2014
Сообщений: 1,037

Опять итераторы

06.10.2021, 08:21. Показов 1766. Ответов 22
Метки нет (Все метки)

Добрый день.
Подскажите, как подцепить итераторы к массиву.
Простенький пример, или ссылку на адекватный хау-ту.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2021, 08:21
Ответы с готовыми решениями:

C++: итераторы по умолчанию, пустые итераторы, end()
Всем добра! Вопрос на тему итераторов в плюсах: 1. какие значения имеют итераторы без инициализации например,...

Итераторы и обратные итераторы
У вектора есть два типа итераторов, обычные и обратные итераторы произвольного доступа... Обычные реализовал, осталось обратные. Решил...

итераторы
ребят помогите плиз vector<double>::iterator t = matrix.begin(); vector<double>::iterator t1 = matrix.end(); ...

22
37 / 31 / 5
Регистрация: 30.04.2014
Сообщений: 1,037
07.10.2021, 08:55  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Реализовать свой итератор, который это учитывает.
вот это и пытаюсь спросить. именно как синтаксис его звучит. да, там должно быть это:

C++
1
2
3
4
5
    T& operator[] (int i)
    {
        int ind = (i + head) % buffSize;
        return buff[ind];
    }
а вот как это в итераторах выглядит...
хотя бы шаблон набросайте, если можно.
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
07.10.2021, 11:29
Лучший ответ Сообщение было отмечено Khludenkov как решение

Решение

Цитата Сообщение от Khludenkov Посмотреть сообщение
вот это и пытаюсь спросить. именно как синтаксис его звучит. да, там должно быть это:
Ну вот вы бы сразу вопрос построили как положено.
Например,
"Делаю циклический буфер, сторонние решения использовать нельзя, т.к. ограничен ресурсами, пытаюсь прикрутить к этому буферу итераторы, как это можно организовать? Вот код того, что уже есть ..."
и т.д.
Вот 99% вопросов тут содержат что угодно, кроме конкретного описания изначальной проблемы.

Ну а теперь исходя из уточненного вопроса, вот вам код для примера:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
template <typename T, size_t Capacity>
class Buffer
{
public:
    class Iterator {
        friend class Buffer;
    public:    
        Iterator& operator++() 
        {
            index += 1;
            return *this;    
        }
        
        bool operator!=(Iterator const& other) const
        {
            return index != other.index;
        }
        
        T& operator*() 
        {
            return owner.m_buff[index % Capacity];
        }
        
    private:
        Iterator(Buffer& owner, int idx)
            : index(idx), owner(owner)
        { }
        
    private:
        int index;
        Buffer& owner;  
    };
    
    Buffer() : m_buff()
    { }
    
    T& operator[](int i)
    {
        assert(i < size());
        return m_buff[(i + m_head) % Capacity];        
    }
    
    void push_back(T const& value)
    {
        int idx = (m_head + size()) % Capacity;
        if(m_size < Capacity) {
            ++m_size;
        }
        m_buff[idx] = value;
    }
    
    void pop_back()
    {
        if(m_size > 0) {
            --m_size;
        }
    }
 
    Iterator begin() 
    {
        return Iterator(*this, m_head);
    }
    Iterator end() 
    {
        return Iterator(*this, m_head + size());
    }
    
    int size() const
    {
        return m_size;
    }
    
private:
    T m_buff[Capacity];
    
    int m_head = 0;
    int m_size = 0;
};
 
template <typename T>
void print(T & cb) {
    for(auto& v : cb)
    {
        std::cout << v << ' ';
    }
    std::cout << '\n';    
}
int main()
{
    Buffer<int, 3> cb;
 
    cb.push_back(1);
    cb.push_back(2);
    cb.push_back(3);
 
    print(cb);
    
    cb.push_back(4);
    
    print(cb);
    
    cb.pop_back();
    cb.pop_back();
    
    print(cb);
 
    cb.push_back(5);
    cb.push_back(6);
    cb.push_back(7);
    
    print(cb);
}
0
37 / 31 / 5
Регистрация: 30.04.2014
Сообщений: 1,037
07.10.2021, 12:01  [ТС]
DrOffset, спасибо большое.

pop-ы и push-и сам сделал.
проблема именно с итераторами была.
в книгах много про них есть, но всё как-то размазано, на мой взгляд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2021, 12:01

Итераторы в C++
Помогите плз решить 2 задачи Задача 1 Напишите программу, использующую итераторы при чтении последовательности строк со стандартного...

Итераторы С++
Помогите, пожалуйста, надо написать две программы Задача 1 Напишите программу, использующую итераторы при чтении последовательности...

итераторы си++
подскажите пожалуйста какие существуют методы итераторов? и что они делают?

Итераторы
Как указать не на следующий за последним элемент последовательности, а на последний! end() - следующий за последним Добавлено через...

Итераторы
От какого класса наследуются итераторы в STL? Например я создаю класс и для него нужен собственный итератор, совместимый с STL (более...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов • Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp • Смежный проект:. . .
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1) Сложность: Medium Источник: LeetCode 380 Задача Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack Сложность: Medium Источник: LeetCode 155 Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы:
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru