C++ Standard Kütüphanesi
Vikipedi'den, özgür ansiklopediden
Vikipedi'den, özgür ansiklopediden
C++ Standard Kütüphanesi, C++ programlama dilinde ve C++ ISO Standard'ıyla yazılmış sınıfların ve fonksiyonların koleksiyonudur.
C++ Standard Kütüphanesi pek çok jenerik tutucu (veri yapısı gerçeklenimi, konteynır), bu tutucular üzerinde işlem yapmaya yarayan fonksiyon, fonksiyon nesnesi, jenerik string ve akış, dil destek özellikleri ve sık kullanılan bazı fonksiyonlar sağlar.
C++ Standard Kütüphanesi, Standard Template Library (STL) baz alınarak geliştirildi ve jenerik programlama araştırmalarından ve STL'in geliştiricileri Alexander Stepanov ve Meng Lee'den izler taşır.[1][2] C++ Standard Kütüphanesi ile STL pek çok ortak özellik barındırsa da birbirlerinin aynısı değildir.[kaynak belirtilmeli]
C++ Standard Kütüphanesi'nin kayda değer özelliklerinden bir tanesi, jenerik algoritmaların sözdizim ve anlamının yanında, performans gereksinimlerini de belirlemesidir. Bu gereksinimler çoğu zaman iyi bilinen bir algoritmaya karşılık gelir ama bu, o algoritmanın kullanılmasını gerektirmez. Çoğu durumda lineer O(n) veya lineeritmik O(n log n) zamanlı gereksinimlerdir ama O(n log2 n) zamana da izin verilebilir.
C++ Standard Kütüphanesi, 1990lardan itibaren C++ ISO Standardizasyon çabası çerçevesinde ISO standardizasyonuna tabi tutulmuştur. 2011 sonrasında genişletilmiş ve her üç yılda bir[3] C++ standardıyla birlikte güncellenmektedir.
Ad | Organizasyon | Anasayfa | Kısaltma | Lisans | En son sürüm |
---|---|---|---|---|---|
GNU C++ Standard Library | GNU Projesi and Free Software Foundation | libstdc++ | GPLv3 with GCC Runtime Library Exception | Her yıl | |
LLVM C++ Standard Library | LLVM Developer Group | libc++ | Apache License 2.0 with LLVM Exceptions | Her 2 haftada | |
NVIDIA C++ Standard Library | Nvidia | libcu++ | Apache License 2.0 with LLVM Exceptions | 15 Mart 2023) | |
Microsoft C++ Standard Library | Microsoft | MSVC STL | Apache License 2.0 with LLVM Exceptions | Her gün | |
HPX C++ Standard Library for Parallelism and Concurrency | STELLAR Group | HPX | Boost Software License 1.0 | 29 Mayıs 2024) | |
Electronic Arts Standard Template Library | Electronic Arts | EASTL | BSD lisansları | 9 Haziran 2023) | |
Dinkum C++ Library | Dinkumware | Bilinmiyor | Ticari | Bilinmiyor | |
Cray C++ Standard Library | Cray User Group | Bilinmiyor | Ticari | Bilinmiyor |
Apache C++ Standard Library bir başka açık kaynak gerçeklenimdir. En başta Rogue Wave Software tarafından ticari olarak geliştirmış, sonrasında Apache Yazılım Vakfı'na bağışlanmıştır.[4] Ancak beş sene kadar yeni bir yayın yapmadı ve Apache Yazılım Vakfı yönetimi projeyi sonlandırma kararı aldı ve rafa kaldırdı.[5]
Aşağıdaki kütühaneler C++ Standard Kütüphanesi'nin büyük bir bölümünü gerçekler:
Modüllerin C++20 ile tanıtılmasından, C++23 standardına kadar standard kütüphane modülleri için destek bulunmamaktadır. İsimlendirilmiş modüller, modüllerden önce başlık dosyalarıyla dahil edilen global ve std
isim alanındaki tüm bildirimleri kolayca dahil etmeye yarar.
std
std
isim alanında başlık dosyalarında bulunan tüm yapıları sağlar.std.compat
std
isimlendirilmiş modulünün getirdiklerinin yanı sıra global isim alanında tanımlanmış C kütüphanesindeki yapıları da sağlar.Aşağıdaki dosyalar C++ standart kütüphanesinin bildirimlerini içerir.
<any>
std::any
'i sağlar.<atomic>
std::atomic
ve onun pek çok özelleştirmeleri ile atomik operasyonları sağlar.<chrono>
std::chrono::duration
, std::chrono::time_point
ve saat yapısı gibi zaman yapılarını sağlar. C++20 ile birlikte; takvim, zaman dilimi, daha fazla saat (clock), string chrono formatlama ve pek çok zamansal özellik eklendi.<concepts>
<expected>
std::expected
şablon sınıfını sağlar.<functional>
<generator>
<memory>
std::unique_ptr
'ın da içinde bulunduğu bellek yönetimi için kolaylıklar sağlar.<memory_resource>
<optional>
std::optional
sınıf şablonunu sağlar.<scoped_allocator>
std::scoped_allocator_adaptor
sınıf şablonunu sağlar.<stacktrace>
<stdexcept>
std::logic_error
ve std::runtime_error
gibi std::exception
sınıfından türetilmiş standard harici durum sınıflarını bulundurur.<system_error>
std::error_code
sınıfını tanımlar.<tuple>
std::tuple
şablon sınıfını sağlar.<type_traits>
<utility>
std::pair
(iki elemanlı tuple), derleme zamanı tamsayı dizileri, std::move
, std::forward
gibi fonksiyonları ve çok daha fazlasını sağlar.<variant>
std::variant
sınıf şablonunu sağlar.<compare>
<coroutine>
<exception>
<initializer_list>
<limits>
std::numeric_limits
sınıf şablonunu sağlar.<new>
new
ve delete
operatörleri ile C++ hafıza yönetiminde kullanılan diğer fonksiyon ve türleri sağlar.<source_location>
__LINE__
gibi makrolara alternatif olarak kaynak kod hakkında, kod satırı numarası ve sütünunun yeri, fonksiyon adı, dosya adı hakkında bilgi sağlar.<stdfloat>
<typeinfo>
<version>
<array>
std::array
'i sağlar.<bitset>
std::bitset
'i sağlar. Bit türü için dizi yapısıdır.<deque>
std::deque
sınıf şablonunu sağlar.<flat_map>
std::flat_map
ve std::flat_multimap
'i sağlar.<flat_set>
std::flat_set
ve std::flat_multiset
'i sağlar.<forward_list>
std::forward_list
sınıf şablonunu sağlar.<list>
std::list
sınıf şablonunu sağlar.<map>
std::map
ve std::multimap
sınıf şablonlarını sağlar.
<mdspan>
std::span
'e benzer şekilde fakat çok boyutlu (multi dimensional) olan std::mdspan
sınıf şablonunu sağlar.<queue>
std::queue
ve std::priority_queue
adaptör sınıflarını sağlar.<set>
std::set
ve std::multiset
'i sağlar.<span>
std::span
'ı sağlar.<stack>
<unordered_map>
std::unordered_map
ve std::unordered_multimap
şablon sınıflarını sağlar.<unordered_set>
std::unordered_set
ve std::unordered_multiset
sınıf şablonlarını sağlar.<vector>
std::vector
şablon sınıfını sağlar.<algorithm>
<execution>
<iterator>
<numeric>
<ranges>
<codecvt>
<locale>
<text_encoding>
<charconv>
<format>
std::format
gibi string biçimlendirme araçları sağlar.<string>
<string_view>
std::basic_string_view
'i tanımlar.<regex>
<filesystem>
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
std::istream
'i ve diğer girişle ilgili sınıfları sağlar.<ostream>
std::ostream
'i ve diğer çıkışla ilgili sınıfları sağlar.<print>
std::print
gibi araçları bulundurur.<spanstream>
std::spanstream
ve diğer sabit karakter tampon (buffer) G/Ç akışlarını sağlar.<sstream>
std::stringstream
string manipülasyon sınıflarını sağlar.<streambuf>
<syncstream>
std::osyncstream
'i ve senkronize edilmiş çıkış akışları için destekleyici sınıfları sağlar.<barrier>
std::barrier
'ı sağlar.<condition_variable>
<future>
<hazard_pointer>
std::hazard_pointer
yapısını sağlar.<latch>
std::latch
'i sağlar.<mutex>
<rcu>
<shared_mutex>
<semaphore>
<stop_token>
<thread>
C++ programlarının yarı sayısal işlemler gerçekleştirmek için kullanabileceği bileşenler:
<bit>
<complex>
std::complex
'i ve çeşitli karmaşık sayı operasyonlarını tanımlar.<numbers>
std::numbers
isim alanı altında matematik sabitleri sağlar.<random>
<ratio>
<valarray>
std::valarray
, std::slice_array
, std::gslice_array
, std::mask_array
ve std::indirect_array
sınıf şablonları ile std::slice
ve std::gslice
sınıflarını ve bunlarla ilgili fonksiyon şablonlarını sağlar.C Standard Kütüphanesi'nin her bir başlık dosyası C++ Standard Kütüphanesi'nde .h uzantısı kaldırılmış ve önüne 'c' getirilmiş olarak bulunur. Mesela 'time.h', 'ctime' olarak görünür. Bu başlık dosyalarıyla C Standard Kütüphanesi arasındaki tek fark, fonksiyonların std::
isim alanında bulunmasıdır. ISO C'de, standart kütüphane fonksiyonlarının makro kullanılarak gerçeklenmesine izin verilir, ancak ISO C++'ta buna izin verilmez.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.