Вопросы по теме 'const-iterator'

вернуть константный и неконстантный объект-оболочку
Если я хочу, чтобы пользовательский класс контейнера предоставлял доступ к своим данным через объект, подобный итератору (фактически действующий как оболочка для некоторых данных в контейнере), и я хочу иметь возможность получить как константный, так...
118 просмотров
schedule 06.05.2022

std::map::begin() возвращает итератор с мусором
typedef unsigned long Count; typedef float Weight; typedef std::map<std::string, Count> StringToCountMap; typedef std::map<std::string, Weight> StringToWeightMap; typedef std::map<unsigned long, StringToCountMap>...
1110 просмотров
schedule 15.05.2022

В чем разница между const_iterator с std::begin() и const_iterator с std::cbegin()?
Зачем нам cbegin , если std::vector<int>::const_iterator itr с std::begin сделают то же самое? Есть ли проблема с использованием первого цикла (UB или что-то в этом роде)? Обе петли дают тот же результат, что и ожидалось. int main() {...
10 просмотров
schedule 24.05.2022

Как выставить классы C++ с помощью const_iterator
Я использую Boost.Python для предоставления Сторонний API C++. Файл заголовка, к которому я пришел, объявляет итерируемый класс (имеет методы begin и end ) и пользовательский класс итератора, с помощью которого выполняется итерация: -...
1303 просмотров

Преобразование итераторов и const_iterators
Общий контекст: Я пытаюсь создать контейнер, который будет вести себя как оболочка для многомерного массива измерений, определенных во время выполнения - на самом деле, базовый массив, конечно, является одномерным массивом общего размера. Основная...
897 просмотров

С++ Невозможно преобразовать из const int* в const_iterator
Я обновился до более нового компилятора C++ (перешел с Visual C++ 6.0 на Visual C++ 2015) и работаю над преобразованием класса шаблона Vector, чтобы он был совместимым. Одна ошибка, с которой я сталкиваюсь, связана с методом vector::erase и типом...
1233 просмотров
schedule 08.07.2022

С++ отсортированное представление диапазона - как создать const_iterator?
Я пытаюсь написать класс, который должен действовать как отсортированное представление некоторой базовой последовательности элементов. До сих пор я придумал не- const версию. Теперь у меня проблемы с его адаптацией, чтобы он также обеспечивал...
579 просмотров
schedule 25.07.2022

Должен ли обычный итератор (или аналогичный класс диапазона/представления) быть производным от const_iterator?
Является ли хорошей практикой делать обычный итератор (или аналогичный диапазон или класс представления) производным от соответствующего const_iterator? мотивация для этого поделиться кодом и избегая преобразований, когда...
92 просмотров

как определить неявное преобразование из пользовательского итератора в пользовательский const_iterator
Я пишу класс контейнера "Дерево" в стиле STL. В настоящее время я поддерживаю константные и неконстантные итераторы, используя один класс со следующей идиомой: template<typename T> class Tree { public: using iterator =...
963 просмотров
schedule 30.03.2023

Аннулирование итератора с помощью `std :: string :: begin ()` / `std :: string :: end ()`?
#include <string> #include <iostream> int main() { std::string s = "abcdef"; std::string s2 = s; auto begin = const_cast<std::string const &>(s2).begin(); auto end = s2.end(); std::cout << end -...
960 просмотров
schedule 06.06.2023

Каковы правила, регулирующие постоянство возвращаемого значения `operator*` для InputIterator и OutputIterator?
Я определяю итераторы для пользовательского контейнера. Итераторы реализуют концепции InputIterator и OutputIterator. Какие типы следует использовать для iterator::reference и const_iterator::reference ? И какие типы должен возвращать...
56 просмотров
schedule 24.03.2023

Новая подпись std::map::erase() C++17
Согласно этому ответу , iterator должно быть неявно преобразовано в const_iterator . Поскольку это правда, как мы видим в insert_or_assign() , то почему в C++17 была ли добавлена ​​новая подпись к std::map::erase() ? В С++ 11 у нас есть...
991 просмотров
schedule 07.01.2023