RING - линейная структура данных, в которой конец указывает на начало структуры. Он также называется циклическим буфером, циклической очередью или циклическим буфером.
У меня есть функция для записи. Его целью является создание другой структуры RING из исходного RING, но она имеет определенную длину, и дело в том, что это должен быть каждый ВТОРОЙ элемент исходного RING.
Пример:
originalRing = 1,2,3,4,5
вызывается функция newRing: newRing (originalRing, nRing, len1 = 5)
nRing = 1,3,5,2,4
(пояснение: «1» - 1-й элемент КОЛЬЦА. Каждая секунда означает, что я беру 3, 5 ... но это КОЛЬЦО, так что это выглядит как 1,2,3,4,5,1,2 , 3,4,5, ... Функция говорит, что nRing должен иметь длину 5, поэтому я беру следующий каждый элемент: 2,4. Наконец, он дает 1,3,5,2,4)
Я использую итераторы (я должен, школьный проект).
iterator i1 = nRing.begin(); //--- .begin() points to the 'beginning' of the Ring
if (originalRing.isEmpty()){ //---whether originalRing is empty or not
return false;}
if (originalRing.length()==1){ //--- if originalRing no. of elements is 1, returns that Ring
return originalRing;
}
if (len1<=0) //--- doesnt make sense
{return false;}
if(!i1.isNULL()) //--- checks whether iterator is null
{
for(int i = 0; i < len1; i++)
{
nRing.insertLast(i1.getKey()); //insert the element to the end of the Ring
i1++;
}
}
Итак, здесь я спрашиваю, что i1 ++ --- итерирует элементы один за другим.
Мой вопрос заключается в том, как определить цикл с итератором, определенным для присоединения каждого второго элемента?