SORU
3 Mayıs 2010, PAZARTESİ


Utanç verici C ile ilgili soru inş

this answer eleştirilerime constness konular hakkında düşünmemi ve sıralama var. Biraz oynadım ve bu kod aslında benim sorunları azalır:

#include <vector>

int main() {
    std::vector <const int> v;  
}

derlenir değil - sabit in bir vektör oluşturabilirsiniz. Belli ki, bu anlamalıydım (ve entelektüel yaptım), ama asla böyle bir şey daha önce oluşturmak için ihtiyacım olmadı. Ancak, benim için faydalı bir yapı gibi görünüyor, ve eğer orada herhangi bir şekilde yuvarlak bu sorun ise merak ediyorumBir vektör (ya da her Neyse) birşeyler eklemek istiyorum, ama önce bir kez değiştirilmelidir.

Muhtemelen bu utanç verici basit bir çözüm var, ama daha önce hiç düşünmeyeceğim bir şey.

Düzenleme:Muhtemelen sıralama (soru soran zorluklar için this bakın bu konuda başka bir soru daha sormama izin) sözü olmalıdır. Gerçek taban kullanmak benim durumumda böyle bir şey

vector <const int> v;     // ok (i.e. I want it to be OK)
v.push_back( 42 );        // ok
int n = v[0];             // ok
v[0] = 1;                 // not allowed

CEVAP
3 Mayıs 2010, PAZARTESİ


Peki, C 0x içinde

C 03, paragraf var 23.1[lib.kaplar.şartları] diyor ki/3,

Nesneleri bu bileşenler içinde saklı Tipi CopyConstructible türleri (20.1.3) gereksinimleri ve Assignable tür ek gereksinimleri karşılaması gerekir.

Bu şu anda std::vector türü bir değişken olarak const int kullanarak engelliyor.

Ancak, C 0, bu fıkra eksik, onun yerine T gereken Destructible ve ek gereksinimler T belirtilen her ifade, örneğin v = u std::vector geçerli T MoveConstructible MoveAssignable.

Ben bu gereksinimleri doğru yorumlarsanız, sadece işlevselliği bazı istedin sanırım) eksik olacak std::vector<const int>, oluşturmak mümkün olmalıdır. Kurucu kullanımına bir çift geçirerek doldurun. T açık gereksinimleri bulmak için başarısız oldum gerçi emplace_back() de çalışması gerektiğini düşünüyorum.

Hala vektör yerinde olsa sıralamak mümkün olmayacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • itfigueres

    itfigueres

    12 EKİM 2013
  • VOICE TV

    VOICE TV

    2 Aralık 2010