2010-11-22 56 views
5

我需要使用的德爾福套的優勢,如「在」 C++中的設置,如數據結構,但我不知道是否有像++套在C什麼是C++

我的數據結構知道我可以用一個數組來代替,但正如我所說的,我想使用像「in」這樣的set優勢,那麼是否有像C++中的set一樣的內置數據結構?

如果是,請解釋如何使用它,我還是在C++

首發。如果沒有,有沒有辦法來表示它(exept陣列,因爲我知道它)。

在此先感謝:)

+4

[`std :: set`](http://www.sgi.com/tech/stl/set.html)是一個集合。你可以`#include `來獲得它。 – birryree 2010-11-22 21:50:19

+1

「set」及其本地運算符(in,+, - ,*)是Pascal(和Delphi)特有的。 C++使用模板實現了類似的功能,但是它們缺乏Pascal實現的優雅(儘管現在Pascal集限於255個元素) – 2010-11-22 22:31:59

回答

10

有一個標準庫容器調用std::set ...我不知道德爾福,但在一套簡單的元素操作將通過使用find方法及end結果進行比較,來實現:

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

其他操作可以實現爲標準庫算法(std::unionstd::difference ...)

0

是的,有是一個C++ STL set容器類DES第65頁。 Stroustrup的TC++ PL(Special Ed。)的491。

2

在C++中沒有任何類似的集成。根據您的需要,您可能希望使用位標誌和位操作或std::bitset標準容器(當然除了std :: set之外)。如果您使用的是C++ Builder,那麼還有一個模擬Delphi設置的類 - 在System.hpp中搜索BaseSet或SetBase或類似的東西 - 我不記得確切的名稱。

0

STL算法具有以下 From MSDN

set_difference 團結所有屬於一個排序源範圍中的元素,但不與第二排序源範圍,成一個單一的,分類目標範圍,其中排序標準可以由二元謂詞來指定。

set_intersection 團結所有同時屬於這兩個排序源的元件的範圍成一個單一的,分類目標範圍,其中,所述排序標準可以由二進制謂詞來指定。

set_symmetric_difference 團結所有屬於一個元件,而不是兩者的排序源範圍成一個單一的,分類目標範圍,其中,所述排序標準可以由二進制謂詞來指定。

set_union 團結所有屬於的兩個排序源的至少一個元素的範圍成一個單一的,分類目標範圍,其中,所述排序標準可以由二進制謂詞來指定。