Boşluk işaretlerini kullanarak C dilinde bir temel sıra yapısı uyguladım. Prosedür aşağıdaki gibidir:C void * kullanarak sıra uygulaması - iyi veya kötü uygulama?
- yapı başlatma - Değişken tip boyutunu kuyruğunda
- itme depolanacak set - I değişken için işaretçi depolanacak geçmesi, sıra daha sonra kapmak kendisi için bir kopya ön - yapı, öndeki öğeye bir boşluk * döndürür. Yerel bir kopyanın olması için işaretçiyi veya
memcpy()
'u yakalayabilirim.
yapı kendisi şuna benzer:
struct queue
{
void* start; //pointer to the beginning of queue
void* end; //-||- to the end
size_t memsize; //size of allocated memory, in bytes
size_t varsize; //size of a single variable, in bytes
void* initial_pointer; //position of the start pointer before pop() operations
};
başlangıç ve bitiş şu anda ayrılmış bellek bloğu içinde bazı konuma işaret sadece boşluk noktalar şunlardır. Öğeleri sıraya itirsem, son göstericiyi varsize
ile artırırım. Eğer pop() ise, son göstericiyi de varsize
ile düşürüyorum. Buraya fonksiyonları kod gönderilmesi gerekiyor sanmıyorum
, 100 hatları bitti.
soru: bu kötü bir uygulama iyi ya da kabul edilir? Neden olmasın)?
Not: Ben sadece bu bir kalitesi hakkında soruyorum C. kuyrukta için birçok seçenek vardır farkındayım.
DÜZENLEME: uygulama burada mevcuttur: http: türünü ve boyutunu bilmiyorsanız // 89.70.149.19 /stuff/queue.txt
Bellek boyutları için size_t kullan –
Ben jenerik kodu yazmak için iyi olduğunu düşünüyorum * void * ' –
@RanEldan Teşekkür ederim, yapacağım. Burada düzeltildi. – szczurcio