C++ veri yapıları ve algoritmalar için iyi mi?
Yarışma programlamasında en yaygın seçimdir, mülakatlar için de güçlü bir seçim: hızlıdır ve standart kütüphanesi ihtiyaç duyduğun neredeyse her yapıyı kapsar. Bedeli daha fazla kod ve işlerin ters gidebileceği daha fazla yoldur: sarkan pointer'lardan geçersiz kalmış iterator'lara kadar. Bu yolun yaptığı gibi yapıları önce kendin kurmak, bunların sürpriz olmaktan çıkmasının yoludur.
Hangi STL konteyneri hangi veri yapısına karşılık gelir?
std::vector dinamik bir dizidir, std::stack ve std::queue varsayılan olarak std::deque üzerine kurulu adaptörlerdir, std::list çift yönlü bir bağlı listedir, std::unordered_map ve std::unordered_set hash tablolarıdır, std::priority_queue ikili bir heap'tir (Python'ınkinin ve Java'nınkinin aksine varsayılan olarak bir max-heap), std::map ve std::set ise dengeli ikili arama ağaçlarıdır, pratikte kırmızı-siyah ağaçlar. Trie ya da graf konteyneri yok; onları sen yazarsın.
Veri yapılarını kendim mi yazmalıyım, yoksa doğrudan STL mi kullanmalıyım?
İkisini de, bu sırayla. Her yapıyı bir kez yaz; böylece std::unordered_map aramalarının neden ortalamada sabit zaman aldığını ve std::map'in anahtarlarını neden sıralı tuttuğunu bilirsin. Sonrasında her yerde STL'i kullan. Bir yarışmada ya da mülakatta kimse elle yazılmış bir kırmızı-siyah ağaç beklemez; doğru konteyneri seçmeni ve maliyetini bilmeni bekler.
DSA için C++ mı, Python mı?
Yarışma programlaması yapmayı ya da C++'ın beklendiği yerlerde mülakata girmeyi planlıyorsan C++; fikirden çalışan koda en kısa yolu istiyorsan Python. Algoritmalar aynı olduğundan birçok kişi birinde öğrenip diğerinde yarışır. Bu yoldaki her veri yapısı kursu ikisiyle de anlatılıyor.
Bu yoldaki hangi kurslar C++ ile anlatılmıyor?
İki kurs: dinamik programlama ve Python mülakat serisi, ikisi de Python ile anlatılıyor. Adımlardan sonra, onları Python ile açan bir bağlantıyla listeleniyorlar. Fikirler olduğu gibi aktarılır: C++'ta bir memo tablosu bir std::vector ya da bir std::unordered_map'tir.
Bu yola başlamadan önce C++ bilmem gerekiyor mu?
En azından sınıflar, pointer'lar, referanslar ve std::vector. Bunlar sana yeniyse, Coddy'nin C++ kursu önce bunları ücretsiz olarak anlatır ve bu yol onun bittiği yerden devam eder.