7
голосов
4ответов
3374 просмотров

Где взять образец кода на C ++, создающий итератор для моего собственного контейнера?

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

10
голосов
4ответов
8804 просмотров

Почему мой пользовательский итератор не работает с копией STL?

Я написал OutputIterator для ответа на другой вопрос а>.Вот он: #include <queue> using namespace std; template< typename T, typename U > class queue_inserter { queue<T, U> &qu; public: queue_inserter(queue<T,U> &q) : qu(q) { } queue_inserter...

0
голосов
4ответов
3508 просмотров

Перегрузка * (итератор + n) и * (n + итератор) в классе итератора C ++?

(Примечание: я пишу этот проект только для обучения; комментарии о том, что он избыточен ... эээ, избыточны.;) Я пытаюсь реализовать итератор с произвольным доступом, но нашел очень мало литературы по этому вопросу, поэтому я использую метод проб и ошибок в сочетании со списком прототипов пер...

6
голосов
2ответов
7473 просмотров

C ++ Найдите количество элементов в диапазоне из STL :: multimap

У меня есть STL :: multimap, и я ищу его с equal_range, чтобы получить верхнюю и нижнюю границы.Могу ли я найти количество элементов в этом диапазоне, не перебирая их все и не подсчитывая их один за другим? #include <iostream> #include <map> using namespace std; int main () { ...

28
голосов
6ответов
24472 просмотров

Как я могу перемещаться по файловой системе с помощью генератора?

Я пытаюсь создать служебный класс для просмотра всех файлов в каталоге, в том числе в подкаталогах и подкаталогах.Я пробовал использовать генератор, потому что генераторы - это круто;однако я наткнулся на загвоздку. def grab_files(directory): for name in os.listdir(directory): fu...

2
голосов
5ответов
599 просмотров

c ++: что именно делает & rand?

Это отрывок кода на C ++, который мне придется подробно объяснить через несколько дней: std::vector<int> vct(8, 5); std::generate(vct.begin(), vct.end(), &rand); std::copy(vct.rbegin(), vct.rend(), std::ostream_iterator<int>(std::cout, "\n")); Думаю, я понимаю в нем ...

1
голосов
3ответов
1632 просмотров

Ошибка компиляции C ++ с использованием строки и istream_iterator

При попытке скомпилировать следующее: #include <string> #include <iterator> #include <iostream> using namespace std; int main() { string s(istream_iterator<char>(cin), istream_iterator<char>()); return s.size(); } g ++ 4.4.1 дает мне: main.cc: In funct...

2
голосов
1ответов
337 просмотров

Сбой в msvcp90d.dll при получении итератора из boost :: tokenizer

Когда я извлекаю итератор begin () для boost :: tokenizer, я получаю сбой в msvcp90d.dll с надписью «ITERATOR LIST CORRUPTED», что подозрительно похоже на проблемы, с которыми я сталкивался раньше с флагом компилятора _HAS_ITERATOR_DEBUGGING, однако я убедился, что моя программа компилируется с ...

910
голосов
7ответов
707095 просмотров

Как перебирать два списка параллельно?

У меня есть две итерации в Python, и я хочу пройти их попарно: foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print "f: ", f, "; b: ", b Это должно привести к: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6 Один способ сделать это - перебрать индексы: for i in x...

9
голосов
1ответов
3170 просмотров

Итератор C ++ deque недействителен после push_front ()

Я сейчас читаю книгу Джозаттиса по STL. Насколько мне известно, вектор c ++ - это c-массив, который можно перераспределять. Итак, я понимаю, почему после push_back () все итераторы и ссылки могут стать недействительными. Но мой вопрос касается std :: deque. Насколько я знаю, это массив бол...

0
голосов
2ответов
454 просмотров

Преобразование нескольких элементов итератора

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

17
голосов
3ответов
24199 просмотров

ConcurrentModificationException, несмотря на использование синхронизированного

public synchronized X getAnotherX(){ if(iterator.hasNext()){ X b = iterator.next(); String name = b.getInputFileName(); ... return b; } else{return null;} } , несмотря на оператор synchronized в заголовке объявления, я все равно получаю исключение ConcurrentModificationExc...

59
голосов
7ответов
94043 просмотров

Изменение списка во время итерации

l = range(100) for i in l: print i, print l.pop(0), print l.pop(0) Приведенный выше код Python дает результат, совершенно отличный от ожидаемого. Я хочу перебирать элементы, чтобы можно ...

0
голосов
2ответов
740 просмотров

Глупая ошибка компиляции с использованием списков / итераторов (C ++)

Следующее не компилируется, и я не могу понять почему! #include <list> using namespace std; list<char> myList; list<int>::iterator it; it = myList.begin(); Ошибка: error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::list<_Ty...

2
голосов
3ответов
2931 просмотров

C ++ STL: поиск карты по итератору на другую карту

Я пытаюсь преодолеть некоторые трудности, чтобы организовать данные особым образом. Я включаю упрощенный фрагмент кода, демонстрирующий мою боль. Я не могу использовать ускорение. Я использую последнюю версию g ++ в cygwin. #include <iostream> #include <map> using namespace st...

5
голосов
5ответов
519 просмотров

Выиграет ли C # от различий между видами перечислителей, таких как итераторы C ++?

Я думал о методе IEnumerator.Reset(). Я читал в документации MSDN, что это только для COM-взаимодействия. Как программист на C ++ мне кажется, что IEnumerator, который поддерживает Reset, - это то, что я бы назвал прямой итератор , в то время как IEnumerator, который не поддерживает Reset, на с...

0
голосов
2ответов
1926 просмотров

как решить эту проблему с приведением итератора?

Ошибка компилятора (VC8): ошибка C2680: 'std :: _ Tree :: iterator': недопустимый целевой тип для dynamic_cast исходный код для имитации ошибки: [РЕДАКТИРОВАТЬ] источник исправлен #include <map> #include <string> struct tag_data { int in; int on; std::string s...

5
голосов
5ответов
8845 просмотров

Алгоритмы STL и const_iterators

Сегодня я написал небольшой предикат для поиска совпадающих символов в контейнере. Но я столкнулся с проблемой: я хочу использовать этот предикат в вызове std::find_if внутри константного метода класса, выполняя поиск в контейнере, который является членом этого класса. Но я только что заме...

1
голосов
3ответов
2621 просмотров

Как лучше всего иметь какой-нибудь ленивый итератор, когда возврат оценивается только по запросу?

import java.util.Collection; import example.Event; public interface Query { public boolean hasMore (); public Collection<Event> getNext ( long count ) throws Exception; } Это тот интерфейс, который у меня есть, и я хочу его реализовать. Реализация должна быть такой: im...

0
голосов
5ответов
231 просмотров

Как создать оператор-> в итераторе без контейнера?

template <class Enum> class EnumIterator { public: const Enum* operator-> () const { return &(Enum::OfInt(i)); // warning: taking address of temporary } const Enum operator* () const { return Enum::OfInt(i); // There is no problem with this one! } private: ...

0
голосов
2ответов
3651 просмотров

ClassCastException при приведении итератора HashMap к конкретному типу

Я новичок в processing.org и Java.Я пытаюсь сохранить объекты в HashMap, а затем перебираю значения HashMap, вызывая методы для сохраненных объектов. Чтобы сделать это, я предполагаю, что мне нужно преобразовать итератор в тип моего класса, но это вызывает исключение ClassCastException («java.ut...

5
голосов
4ответов
464 просмотров

Как написать класс, способный выполнять foreach

Прошло некоторое время с тех пор, как Visual Studio добавила поддержку расширения foreach, которое работает как vector<int> v(3) for each (int i in v) { printf("%d\n",i); } Я хочу знать, как сделать так, чтобы любой класс мог использовать foreach.Мне нужно реализовать какой-то инт...

21
голосов
5ответов
10827 просмотров

Делает ли изменение размера вектора недействительными итераторы?

Я обнаружил, что этот код C ++: vector<int> a; a.push_back(1); a.push_back(2); vector<int>::iterator it = a.begin(); a.push_back(4); cout << *it; вывести какое-нибудь большое случайное число;но если вы добавите a.push_back(3) между 3-ей и 4-й строками, будет напечатано 1...

9
голосов
7ответов
10514 просмотров

Ограничьте ListIterator первыми N элементами (оптимизировано)

Каков простой и быстрый способ получить итератор, возвращающий не более N элементов с начала List? Самые простые версии, которые я мог придумать: №1: import com.google.common.collect.Iterators; // ... public static <E> Iterator<E> lengthLimitedIterator(Iterable<E> so...

4
голосов
5ответов
3187 просмотров

Итерация массива, начиная с середины

В недавнем интервью был задан один необычный вопрос a[]= { 1,2,3,4,5,6,7,8,9,10} Когда дан массив с указанным начальным индексом, мне нужно повторять его, пока я не прохожу все элементы. Предположим, что начальный индекс равен "5", мне нужно начать с 6,7,8,9,10,5,4,3,2,1. Пожалуйста, в...

14
голосов
4ответов
8289 просмотров

Объявление переменных экземпляра, повторяющих хэш!

я хочу сделать следующее: Я хочу объявить переменные экземпляра класса, повторяющего словарь. Предположим, у меня есть этот хеш hash = {"key1" => "value1","key2" => "value2","key3" => "value3"} , и я хочу, чтобы каждый ключ был переменной экземпляра класса.Я хочу знать, могу...

0
голосов
2ответов
160 просмотров

Лучший подход C # Itreator

Помимо (IEnumerable возвращает GetEnumerator (), для "foreach" важен IEnumerble) Почти следующие два подхода позволяют нам перебирать коллекцию. Что такое преимущество одного перед другим?(Я не спрашиваю разницы между IEnumerable и IEnumerator). static void Main() { IEnumerator<i...

20
голосов
5ответов
11288 просмотров

Как работает __iter__?

Несмотря на то, что я прочитал об этом, я до сих пор не совсем понимаю, как работает __iter__.Что было бы простым объяснением? Я видел def__iter__(self): return self. Я не понимаю, как это работает, или как это работает.

64
голосов
3ответов
66825 просмотров

повторять вектор, удалять определенные элементы по ходу

У меня есть std :: vector m_vPaths; Я буду повторять этот вектор и вызывать :: DeleteFile (strPath) по ходу. Если я успешно удалю файл, я удалю его из вектора. Мой вопрос: можно ли обойтись без использования двух векторов? Есть ли другая структура данных, которая лучше подходит для моих нужд? ...

11
голосов
3ответов
3107 просмотров

Make my C++ Class iterable via BOOST_FOREACH

I have a class which I want to expose a list of structs (which just contain some integers). I don't want the outside to modify these data, just iterate over it and read them Example: struct TestData { int x; int y; // other data as well } class IterableTest { public: // expose TestD...