Что такое множественная структура данных в c ++ - PullRequest
5 голосов
/ 23 ноября 2010

Мне нужно использовать преимущества наборов delphi, таких как "in" в c ++, но я не знаю, существует ли структура данных, подобная наборам в c ++

. Я знаю, что вместо этого я могу использовать массив, но, как я уже сказал, я хочу использовать преимущества наборов, такие как "in", так есть ли какая-либо встроенная структура данных, такая как наборы в c ++?

Если да, пожалуйста, объясните, как использовать это, я все ещестартер в c ++

Если нет, есть ли способ представить его (кроме массива, так как я его знаю).

заранее спасибо:)

Ответы [ 5 ]

10 голосов
/ 23 ноября 2010

Существует стандартный контейнер библиотеки с именем std::set ... Я не знаю delphi, но простой элемент в операции set будет реализован с использованием метода find и сравнением результата. с end:

std::set<int> s;
s.insert( 5 );
if ( s.find( 5 ) != s.end() ) {
   // 5 is in the set
}

Другие операции могут быть реализованы в виде алгоритмов в стандартной библиотеке (std::union, std::difference ...)

3 голосов
/ 23 ноября 2010

Используйте std::set. См. http://www.cplusplus.com для справки.

2 голосов
/ 23 ноября 2010

В C ++ нет ничего похожего интегрированного. В зависимости от ваших потребностей вы можете использовать битовые флаги и побитовые операции или стандартный контейнер std :: bitset (кроме std :: set, конечно). Если вы используете C ++ Builder, есть также класс, который имитирует наборы Delphi - найдите в System.hpp что-то вроде BaseSet или SetBase или аналогичное - я не могу вспомнить точное имя.

0 голосов
/ 23 ноября 2010

Алгоритм STL имеет следующие значения: Из MSDN

set_difference Объединяет все элементы, принадлежащие одному отсортированному исходному диапазону, но не ко второму отсортированному исходному диапазонув один отсортированный целевой диапазон, где критерий упорядочения может быть задан двоичным предикатом.

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

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

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

0 голосов
/ 23 ноября 2010

Да, существует класс контейнера C ++ STL set, описанный на с. 491 из Страуструпа TC ++ PL (Специальный ред.).

...