2010-11-22 19 views
5

C++ içinde set gibi veri yapısı nedir, ancak c setleri ++Ben ++ c "in" gibi Delphi setleri avantajlarını kullanmak gerekir

benim gibi bir veri yapısı olup olmadığını bilmiyorum bunun yerine bir dizi kullanabileceğimi biliyorum, ama söylediğim gibi "in" gibi avantajlar kullanmak istiyorum, C++ kümesindeki herhangi bir veri yapısı var mı? hayır, (biliyorum çünkü exept dizisi) temsil edecek herhangi bir yolu varsa

evet, nasıl kullanılacağını açıklamak lütfen

, hala

++ c bir marş değilim. peşin :)

+4

['std :: set'] (http://www.sgi.com/tech/stl/set.html) bir kümedir. Bunu elde etmek için #'nu girebilirsiniz. – birryree

+1

"kümesi" ve yerel operatörleri (+, -, *) Pascal (ve Delphi) 'ye özgüdür. C++, şablonları kullanarak benzer bir şey uygular, ancak Pascal uygulamasının zarafetinden yoksundur (şu an Pascal setleri 255 elementle sınırlıdır). –

+2

@ldsandon: 256 element - 0..255. :-) –

cevap

10

operasyon find yöntemi kullanılarak ve end ile sonuca karşılaştırılarak uygulanacağına dair Ben Delphi bilmiyorum std::set denilen standart kütüphane konteyner ... ama sette basit unsur vardır:

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

Diğer işlemler

0

Evet, des bir C++ STL set konteyner sınıfı vardır (... std::union, std::difference) standart kütüphanede algoritmalar olarak uygulanabileceği s. Stroustrup'un TC++ PL'sinin 491'i (Özel Baskı).

2

C++ 'da benzer şekilde entegre hiçbir şey yoktur. İhtiyaçlarınıza bağlı olarak bit işaretlerini ve bitsel işlemleri veya std::bitset standart kapsayıcıyı (tabii ki std :: set'in yanı sıra) kullanmak isteyebilirsiniz. C++ Builder'ı kullanıyorsanız, Delphi setlerini simüle eden bir sınıf da vardır - BaseSet veya SetBase veya benzeri bir şey için System.hpp dosyasını arayın - tam adı hatırlamıyorum.

0

STL algoritması tek kriteri, hedef aralık içinde, ancak ikinci bir kriteri, kaynak aralığına bir kriteri, kaynak alanına ait olan elemanların hepsi bağlayıcı aşağıdaki From MSDN

set_difference sahip sipariş kriteri ikili bir yüklemle belirlenebilir.

set_intersection tek aralıklarını iki kriteri kaynağına ait tüm öğeleri birleştiren sipariş kriteri bir ikili dayanak tarafından belirlenebilir hedef dizi kriteri.

set_symmetric_difference birine ait elemanların hepsi bağlayıcı her ikisi değil ama, sıralanmış kaynak sipariş kriteri, bir ikili dayanak tarafından belirlenebilir tek bir kriteri hedef aralığı içine aralıklarının.

set_union aralıklarını iki sıralı kaynağının en az birine ait olan tüm öğeleri birleştiren bir tek, sipariş kriteri bir ikili dayanak tarafından belirlenebilir hedef dizi kriteri.

+0

Bunlar, konteynırların kendisinde değil, sipariş edilen kaplarda (sipariş öğelerinin çiftleri için hassas olacak şekilde) çalışan algoritmalardır. –