Set, MultiSet, итераторы (итераторы) Комментарии

Набор, Multiset, итераторы (итераторы)


Итератор: Итератор

Мы можем найти некоторые из так называемых структур данных, таких как массивы и связанные списки, они имеют некоторые схожие свойства. Мы рассмотрим следующие два примера:

  1. Массив: массив определения \ (интермедиат ~ А [10] \) , указатель на первый элемент \ (А \) , второй элемент является указателем (. А + 1 \) \ , третий элемент является указателем \ (а + 2 \) , и тому подобное,
  2. Сеть: Для списка \ (Список \ текст {<} Int \ {текст> MyList} ~; \) , которая представляет собой цепь способа хранений хранится, адрес памяти не является непрерывным, но разошелся, он может только с \ (рядом \) или \ (последний \) для доступа к элементам.

Для того , чтобы объединить эти два метода хранения указателя, мы ввели более продвинутый указатель, который называется \ (Итератор \) , теперь определит \ (итератор \) : \ (станд \ текст {::} множество \ текст {< INT} \ {текст> :: ~} Итератор ITER \) , этот указатель может поддерживать следующие операции:

  1. \ (ITER \ {текст} ++ \) : \ (ITER \) следующий адрес указывает на элемент
  2. \ (Iter- \ HSPACE {0.2pt} - \) : \ (ИТЭР \) точка на адрес элемента
  3. \ (ITER * \) : для получения \ (ITER \) указатель указывает на значение адреса хранящегося

Set / Multiset

\ (Set \) является коллекция , которая имеет характер коллекции , принадлежащей: уникальность элемента. А \ (Multiset \) не сказано выше природы, будет иметь вид: \ (\ {0,0,1,1,2 \} \) такие наборы.

Обе структуры данных по умолчанию выполняется в порядке возрастания , аналогично с использованием сбалансированного двоичного дерева поиска.

Ниже приводится использование \ (\ итератора) примеры:

#include <iostream>
#include <set>
#include <algorithm>

int main() {
    std::set<int> s;
    s.insert(2); s.insert(1); s.insert(10);
    std::set<int>::iterator iter = s.end();
    iter --;
    std::cout << *iter << std::endl; // 10
    iter --;
    std::cout << *iter << std::endl; // 2
    iter --;
    std::cout << *iter << std::endl; // 1
}

В качестве примера выше, не трудно найти, \ (End () \) точек нет в \ (SET \) из адреса, адрес является последним элементом.

Примечание:

Почти все \ (набор \) функция и значение возвращаемого \ (Итератор \) .

Все \ (нижняя \ _bound () \ ) и \ (верхний \ _bound () \ ) должен следовать влево и вправо , чтобы открыть и закрыть , т.е. \ ([а, Ь) \ ) в виде

Например:

  1. Для сбора \ (\ {1,2,3,4,5,6,8,9 \} \)

    \ (* Ниже \ _bound (7) = * верхняя \ _bound (7) = 8 \)

  2. Для массивов \ (\ {1,2,3,3,3,3,3,4 \} \)

    \ (* Верхняя \ _bound (3) - * нижняя \ _bound (3) = кол-(3) = 5 \)

  3. Для сбора \ (\ {1,2,3,4,5,6,7,8,9 \} \)

    \ (Низший \ _bound (10) = верхний \ _bound (10) = set.end () \)

рекомендация

отwww.cnblogs.com/jeffersonqin/p/11210915.html
рекомендация