C++ 'da bitly operatörleri genellemek istiyorum ki, temel yapı bir dizidir. Mesela olarakDepolama/çalışma süresi algoritmasını optimize etmek için meta programlama, C++
... Ben 86 bit temsil etmek istiyorum ben böyle bir yapı, yapı/sınıfını kullanın: i 160 bit ayırmaya isterseniz diye böyle bir yapıyı kullanmak istiyorsunuz yerine
typedef struct {
uint64_t x[1];
uint16_t y[1];
uint8_t z[1];
} sampleStruct;
:
typedef struct {
uint64_t x[2];
uint32_t y[1];
} sampleStruct;
Depolama için en ufak bir çözüm değil, en uygun çözüm, tüm parçaların tekdüze olduğunu varsaymak ve bu st. Uyguladığım boyutu kapsamaktadır, ancak bir egzersiz için bile maruz kaldığım yolu tercih ederim. Bana göre
ben sorunu çözmek için metaprogramming kullanması gerektiğini açıkça sesler, bu yüzden bu yüzden anlamak istiyorum C++ şablon metaprogramlama üzerinde büyük uzmanı değilim ancak düzgün
template <int I>
typedef sampleStruct {
//something
}
tanımlamak zorunda ne elde etmek ne yapabilirim
N64 = I/64;
RemN = I%64;
if(0 < RemN <= 8) {
add uint8_t var;
} else if (8 < RemN <= 16) {
add uint16_t var;
} else if (16 < RemN <= 24) {
add uint16_t var;
add uint8_t var;
} else {
//Similarly handle the other cases from 24 < RemN < 64
}
: ya ben böyle bir şey olurdu benim uzunluğu için en iyi "kapağı" karar bilen örnek yapı varing I'in farklı tür uygulamak için en iyi yol olacağını Ben yapmak istiyorum?
Ayrıca, parçaların doğru bir şekilde kümelenmesinin diğer olası uygulamalara kıyasla biraz daha iyi bir performans elde etmesine izin vereceğini tahmin ediyorum.
Yeterli açıklık getiriyor ... (C++ 11 veya daha yeni sürümleri varsayarsak).
İstediğiniz gibi geliyor ['std :: bitset'] (http://en.cppreference.com/w/cpp/utility/bitset). – Daniel
Var olduğunu bilmiyordum, anlattığım şekilde çalışıyor mu? (depolamayı kastediyorum). – user8469759
Bunun hakkında bir konuşma var: https://www.youtube.com/watch?v=ea5DiCg8HOY –