Набор, Multiset, итераторы (итераторы)
Итератор: Итератор
Мы можем найти некоторые из так называемых структур данных, таких как массивы и связанные списки, они имеют некоторые схожие свойства. Мы рассмотрим следующие два примера:
- Массив: массив определения \ (интермедиат ~ А [10] \) , указатель на первый элемент \ (А \) , второй элемент является указателем (. А + 1 \) \ , третий элемент является указателем \ (а + 2 \) , и тому подобное,
- Сеть: Для списка \ (Список \ текст {<} Int \ {текст> MyList} ~; \) , которая представляет собой цепь способа хранений хранится, адрес памяти не является непрерывным, но разошелся, он может только с \ (рядом \) или \ (последний \) для доступа к элементам.
Для того , чтобы объединить эти два метода хранения указателя, мы ввели более продвинутый указатель, который называется \ (Итератор \) , теперь определит \ (итератор \) : \ (станд \ текст {::} множество \ текст {< INT} \ {текст> :: ~} Итератор ITER \) , этот указатель может поддерживать следующие операции:
- \ (ITER \ {текст} ++ \) : \ (ITER \) следующий адрес указывает на элемент
- \ (Iter- \ HSPACE {0.2pt} - \) : \ (ИТЭР \) точка на адрес элемента
- \ (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,2,3,4,5,6,8,9 \} \)
\ (* Ниже \ _bound (7) = * верхняя \ _bound (7) = 8 \)
Для массивов \ (\ {1,2,3,3,3,3,3,4 \} \)
\ (* Верхняя \ _bound (3) - * нижняя \ _bound (3) = кол-(3) = 5 \)
Для сбора \ (\ {1,2,3,4,5,6,7,8,9 \} \)
\ (Низший \ _bound (10) = верхний \ _bound (10) = set.end () \)