Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2020, 14:02   #1
jonn342
Пользователь
 
Регистрация: 26.01.2020
Сообщений: 13
По умолчанию Проблема с составлением итератора

Добрый день. Есть задача написать свой класс, где реализую свой итератор.
Мой шаблонный класс - лист векторов. В классе должны быть описаны 2 функции begin и end, только работать они должны несколько иным образом, а именно begin возвращает 1 элемент первого вектора, а end - последний элемент последнего вектора. Вот тут не могу понять, как сделать такую организацию. Пробовал разного рода махинации с передаваемым в конструктор итератором, но бес толку. Разжуйте непутёвому)

Пример кода:
Код:
#include <list>
#include <vector>
#include <iostream>

using namespace std;

template<typename T>
class VectorList {
	using VectT = vector<T>;
	using ListT = list<VectT>;
	ListT data_;
public:
	VectorList() = default;
	VectorList(const VectorList &) = default;
	VectorList(VectorList &&) = default;

	VectorList & operator=(VectorList const &) = default;
	VectorList & operator=(VectorList  &&) = default;


	template<typename It>
	void append(It p, It q) {
		if (p != q)data_.push_back(VectT(p, q));
	}

	bool empty() const { return size() == 0; }

	size_t size()const {
		size_t res = 0;
		for (auto el : data_) res += el.size();
		return res;
	}
	struct const_iterator : iterator<bidirectional_iterator_tag, T> {
		using VectIt = typename VectT::const_iterator;
		using ListIt = typename ListT::const_iterator;
		using ListPtr = ListT const *;
		ListIt lit;
		VectIt vit;
		ListPtr ptr;

		const_iterator(ListIt p){
			//Проблема здесь
		}
        };

        const_iterator begin() const {
		return data_.cbegin();
	}

	const_iterator end() const {
		return data_.cend();
	}
};
jonn342 вне форума Ответить с цитированием
Старый 20.03.2020, 17:11   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

https://habr.com/ru/post/265491/
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование итератора BwE Общие вопросы C/C++ 1 19.05.2015 21:00
Асимптотика итератора set БалаШагаЛ Общие вопросы C/C++ 0 05.03.2014 20:01
Разыменовывание итератора litviak Общие вопросы C/C++ 5 08.06.2012 14:29
Проблема с составлением цикла artemavd БД в Delphi 12 16.08.2009 14:55