std::vector<int> v1(1000);
std::vector<std::vector<int>> v2(1000);
std::vector<std::vector<int>::const_iterator> v3(1000);
Bu 3 vektörün öğeleri nasıl başlatılır?std :: vektör öğeleri
Int hakkında testler yaptım ve tüm öğelerin 0 olduğunu gördüm. Bu standart mı? İlkellerin tanımsız kaldığına inandım. Veri güvenliği için OS belleğinin temizlenmesini önlemek amacıyla 300000000 öğeli bir vektör yaratıyorum, sıfırdan farklı değerler verin, silin ve yeniden oluşturun. Yeniden oluşturulan vektörün elemanları da 0 idi.
Yineleyici nedir? Varsayılan kurucu için başlangıç değeri (0) var mı yoksa başlangıç değeri tanımsız mı? Bunu denetlediğimde yineleyiciler 0'a işaret eder, ancak bu OS
olabilir Kurucuları izlemek için özel bir nesne oluşturduğumda, ilk nesne için vektörün varsayılan kurucuyu çalıştırdığını ve diğerleri için kopya kurucuyu çalıştırdığını gördüm . Bu standart mı?
Öğelerin başlatılmasından tamamen kaçınmanın bir yolu var mı? Yoksa kendi vektörümü yaratmalı mıyım? (Aman Tanrım, her zaman VEKTÖR UYGULAMASI DEĞİLDİR) Paralel işlemle birlikte çok büyük seyrek matrisler kullandığım için soruyorum, bu yüzden push_back() işlevini kullanamıyorum ve elbette yararsız başlatmayı istemiyorum, daha sonra değiştireceğim değer.
_C++ 11_' in, birer birer varsayılan başlatma yerine bir nüsha basılarak "varsayılan başlangıç değerleri" olarak değiştirildiğine inanıyorum. –
@Attila C++ 11'den alıntılar için cevabımı görün. – pmr
Evet C++ 11 n varsayılan yapılandırıcılar olarak değiştirin. Onaylandı. – Chameleon