2013-01-21 20 views
8

bitset. Şimdi bunun için mantığım dizideki maksimum elemanı bulmak ve bunun için bitset tanımlamaktır. Ama sorun bitset bunun üstesinden nasıl bu kadar sabit bir değer ihtiyacı olan aşağıda Soruma bazıları bu vardır:Değişken boyut Ben benzersiz öğeleri bulmak zorunda olan dizisinde soru pratik yapıyorum

a), Bir ihtimal, değişken boyutu ile Bit kümesiyle tanımlayabilir misin?
b) Eğer değilse, o zaman vector<bool> veya vector<char> kullanılacak en iyi yaklaşım nedir?
c) Boost'un dinamik bir bitset olduğunu biliyorum, ancak bunu öğrenmek için yaptığım gibi alternatif yaklaşımları bilmek istiyorum.

+2

bakınız [Boost.DynamicBitset] (http://www.boost.org/libs/dynamic_bitset/). – ildjarn

cevap

8

std::bitset<N> şablon önceden sabit bir boyut gerektirir. std::vector<bool>, C++ standardının değişken uzunluklu bir bitvektör sağlama şeklidir ve büyümek ve küçültebilen bir bitsete benzer işlevler sunar.

vector<char> veya vector<bool>'un daha iyi veya daha kötü olup olmadığına gelince: vector<bool>, bu hedefi gerçekleştirmenin çok daha doğrudan bir yoludur. Kullanarak başladım, daha sonra performans kabul edilemezse vector<char>'a geçin. Genel olarak, önce en temiz, en basit uygulamayı yazmaya, sonra da daha sonra optimize etmeye çalışmak iyi olur.

Bu yardımcı olur umarız!

+0

Hızlı cevap için teşekkürler .. :) ... tamam bitset sadece önceden bilinen boyutta kullanıldığında kullanılmalıdır ..? – JackSparrow

+0

@ Himank- Bu daha güçlü bir iddia - 'std :: bitset' * * sadece boyut istatistiksel olarak biliniyorsa kullanılabilir. – templatetypedef

+0

Tekrar teşekkürler ..! ve bir kez daha şüphe duyulmuyorsa, bu tür bir soru için vektör (bool) ve vektör (char) 'da en iyi yaklaşım hangisi olurdu? .. Biraz vektörü, 'vektör kullanarak planlıyorsanız, benim cevapta belirtildiği üzere Himank- @ – JackSparrow

İlgili konular