Описание тега iterator-traits
2
ответа
Можно ли сделать move_iterator из istream_iterator?
Рассмотрим следующий код: typedef istream_iterator<char> char_itr ; char_itr eos; string ll("some text here"); istringstream line_in(ll); char_itr start(line_in); move_iterator<char_itr> mstart(start); // !!! move_iterator<char_itr>…
13 авг '15 в 10:13
1
ответ
Обнаружение смежных итераторов
C++17 представил концепцию ContiguousIterator http://en.cppreference.com/w/cpp/iterator. Однако не похоже, что есть планы contiguous_iterator_tag (так же, как мы сейчас имеем random_access_iterator_tag) сообщает std::iterator_traits<It>::itera…
17 мар '17 в 07:47
2
ответа
const_iterator и constness const_iterator::value_type
Почему в STL std::iterator_traits<const T*>::value_type тот же тип, что и std::iterator_traits<T*>::value_type Почему так устроено? Не должно ли первое быть const T, а второе - только T? Как вы должны принять базовый константный правильн…
10 окт '12 в 12:31
1
ответ
Почему decltype() возвращает указатель на ссылку?
Я пытаюсь получить лучшее представление о iterator_traits и нашел фрагмент кода в учебнике C++. Поэтому я добавил некоторый код, чтобы сделать его исполняемым с целью понимания поведения указанного механизма компиляции. Полная программа выглядит так…
31 авг '17 в 11:27
4
ответа
Почему все значения / тип_ различия / указатель / ссылка back_insert_iterator/front_insert_iterator/insert_iterator все недействительны?
В моем проекте я хочу разделить поток на значения определенного типа, поэтому я реализую функцию шаблона как template <typename TElem, typename TOutputIter> TOutputIter SplitSpace(std::istream& IS, TOutputIter result) { TElem elem; while (…
23 апр '13 в 09:23
2
ответа
Почему reverse_iterator вдвойне определяет свои вложенные типы?
Похоже, что адаптер итератора reverse_iterator вдвойне определяет большинство его вложенных типов. В частности, оно наследуется публично от std::iterator который выставляет iterator_category, value_type, difference_type, pointer а также reference, З…
17 мар '15 в 20:21
2
ответа
Переопределение методов map и flatMap в классе, расширяющем черту Iterator
Как начинающий Scala, я пытаюсь реализовать счетчик для каждого элемента Iterator извлекается и обрабатывается в for Выражение, а также счетчик увеличиваются каждый раз, когда начинается новая итерация по одному из "циклов" выражения (внешний цикл и…
18 апр '15 в 12:35
3
ответа
Использование iterator_traits для вывода типа значения из пары итераторов
У меня есть тип typedef std::pair<ConstIterator, ConstIterator> Range; с typedef typename std::vector<T>::const_iterator ConstIterator; Теперь я хотел бы использовать std::iterator_traits для определения типа, на который указывают итерат…
13 авг '15 в 15:02
3
ответа
Есть ли пример итератора, который не использовал бы ptrdiff_t в качестве его diff_type?
Я вижу это iterator_traits всегда определяет difference_type: https://en.cppreference.com/w/cpp/iterator/iterator_traits Мне просто интересно, почему бы не ptrdiff_t для каждого типа? Есть ли пример итератора, который не использует ptrdiff_t? И если…
17 сен '18 в 15:55
1
ответ
Расхождение std::iterator_traits между libstdC++ и libC++
Дано: struct Iter { using value_type = int; using difference_type = int; using reference = int; using pointer = int; using iterator_category = int; }; Следующее прекрасно работает с libstC++, но не компилируется с libC++ 5.0.0: #include <iterator…
27 ноя '17 в 15:00
1
ответ
Функция, которая принимает любой индексируемый тип данных в качестве аргумента
Я пытаюсь сделать функцию, которая может принимать любой класс, который принимает [] оператор. Я хотел бы, чтобы он мог принять: Массивы либо по ссылке, либо по значению Векторы или любой другой контейнер, который можно проиндексировать В результате…
20 дек '17 в 17:52
4
ответа
Специализирующий iterator_traits
Я хотел бы специализироваться std::iterator_traits<> для итераторов шаблона класса контейнера, который не имеет обычных вложенных типов (например, value_type, difference_typeи т. д.) и чей источник я не должен изменять. В основном я хотел бы с…
28 окт '11 в 09:58
0
ответов
Как использовать std::iterator_traits для моего пользовательского контейнера
Я реализую deque, имеющий следующую структуру: template<typename T, template<typename...> class Container = std::vector> class Deque { public: void push_front(const T& obj); void emplace_front(T&& obj); void push_back(const T…
24 фев '17 в 16:21
1
ответ
Нет типа с именем value_type в чертах итератора
Я пытаюсь написать набор связанных списков, совместимый со стандартной библиотекой, и получаю ошибку, которую не могу понять. #include <iterator> #include <cstddef> template <typename T> class SetList{ struct ListNode{ T data; List…
04 дек '18 в 07:23
2
ответа
Вывод категории итератора из переменных параметров
Как я могу заполнить ??? template<class...Itrs> struct itr_category { typedef /* ??? */ type; }; чтобы type является наиболее специализированным из iterator_traits<Itrs>::iterator_category... который поддерживает все Itrsоперации, иначе …
02 авг '12 в 06:18
1
ответ
Каковы типичные случаи использования iterator_trait
Я новичок в C++, поэтому, пожалуйста, потерпите меня. Я пытаюсь понять STL iterator_traits. В книге "Стандартная библиотека C++" структура iterator_traits определена следующим образом: template <class T> struct iterator_traits{ typedef typenam…
19 июл '11 в 03:30
2
ответа
Нет типа с именем указатель в структуре std::iterator_traits<...>
Вот фрагменты моего шаблона connected_list: #include <iostream> #include <iterator> template < class > struct linked_list { struct iterator_base : public std::iterator< std::bidirectional_iterator_tag , int > { typename std::…
28 окт '16 в 18:31
1
ответ
Параметры шаблона не используются при частичной специализации
У меня есть следующий код: template<typename T, typename Allocator = std::allocator<T> > class Carray { // ... typedef T* pointer; typedef pointer iterator; // ... }; Сейчас я пытаюсь сделать частичную специализацию для iterator_traits, …
18 июн '11 в 21:09
4
ответа
Круговая перестановка с двумя итераторами
Мне нужно сделать круговую перестановку списка, например, у меня есть: (a,b,c,d,e) я хочу (e,a,b,c,d). Но мне не удается это сделать, вот что я попробовал: #ifndef ALGORITHME_H #define ALGORITHME_H template<typename I> void permutationCirculai…
17 дек '14 в 18:07
2
ответа
Проверка итератора
Я работаю в проекте C++03. И я беру итератор в шаблон. Мне нужно утверждать, что этот итератор ссылается на определенный тип. Предоставляет ли мне C++ способ сделать это помимо написания моей собственной структуры для проверки? То, что я хочу, являе…
05 авг '15 в 13:13