std::span Temelleri
Bitişik veriler üzerinde sahipliksiz görünümler
std::span Temelleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Sahipliksiz Bir Görünüm
std::span<T> (C++20), string_view gibi ancak her öğe türü için kullanılabilen, bitişik bir dizi üzerinde hafif bir görünümdür. <span> başlığını ekleyin.
#include <iostream>
#include <span>
#include <array>
int main() {
std::array<int, 3> a = {1, 2, 3};
std::span<int> s = a;
std::cout << s.size() << "\n";
}Span'ler Sahiplik Almaz
Bir span, bir işaretçi ve uzunluk depolar; başka bir yerde sahip olunan veriyi gözlemler ve öğeleri hiçbir zaman kopyalamaz.
#include <iostream>
#include <vector>
#include <span>
int main() {
std::vector<int> v = {5, 6, 7};
std::span<int> s = v;
s[0] = 50; // modifies v
std::cout << v[0] << "\n"; // 50
}std::array'den
Bir dizi otomatik olarak span'e dönüştürülür ve span tüm öğelerini görür.
#include <iostream>
#include <span>
#include <array>
int main() {
std::array<int, 4> a = {1, 2, 3, 4};
std::span<int> s{a};
for (int x : s) std::cout << x << " ";
std::cout << "\n";
}Bir vektörden
Bir std::vector de span'e dönüştürülebilir; temelindeki kapsayıcı ne olursa olsun tek biçimli bir görünüm sağlar.
#include <iostream>
#include <vector>
#include <span>
int main() {
std::vector<int> v = {9, 8, 7};
std::span<int> s = v;
std::cout << s.front() << " " << s.back() << "\n";
}İşaretçi ve Boyuttan
Bir span'i ham bir işaretçi ve bir sayaçtan oluşturabilirsiniz; bu, C tarzı arabellekler için kullanışlıdır.
#include <iostream>
#include <span>
int main() {
int buf[] = {10, 20, 30};
std::span<int> s(buf, 3);
std::cout << s[1] << "\n"; // 20
}Span Üzerinde Yineleme
Span'ler aralık tabanlı for döngüsünü ve alışılmış kapsayıcı arayüzünü (size, front, back, data) destekler.
#include <iostream>
#include <span>
int main() {
int buf[] = {2, 4, 6, 8};
std::span<int> s(buf, 4);
int sum = 0;
for (int x : s) sum += x;
std::cout << sum << "\n"; // 20
}Salt Okunur Span'ler
Bir std::span<const int> salt okunur erişim sağlar; bir işlevin verileri değiştirmemesi gerektiğinde bunu kullanın.
#include <iostream>
#include <span>
int main() {
int buf[] = {1, 2, 3};
std::span<const int> s(buf, 3);
std::cout << s[2] << "\n"; // 3
}Span Üzerinden Değiştirme
const olmayan bir span, gerçek veriyi gösterdiği için temelindeki öğeleri değiştirebilir.
#include <iostream>
#include <span>
int main() {
int buf[] = {1, 1, 1};
std::span<int> s(buf, 3);
for (int& x : s) x *= 10;
std::cout << buf[2] << "\n"; // 10
}Dinamik ve Statik Kapsam
Varsayılan olarak bir span'in boyutu dinamiktir; ancak ek denetim için std::span<int, 3> ile bunu derleme zamanında sabitleyebilirsiniz.
Ayırma Yok, Aktarımı Ucuz
Tüm görünümler gibi bir span'i kopyalamak ve değer olarak aktarmak ucuzdur; yalnızca bir işaretçi ve uzunluk taşır.
Ömür Süresine Dikkat Edin
Bir span yalnızca kaynağı yaşadığı ve yeniden ayrılmadığı sürece geçerlidir. Daha sonra büyüyen bir vektöre ait span'i saklamayın.
Kısa Kontrol
std::span konusunu anlayıp anlamadığınızı kontrol edin.
Özet
std::span temelleri hakkında şunları öğrendiniz:
- Bitişik veriler (dizi, vektör, ham arabellek) üzerinde sahipliksiz bir görünümdür.
- Bir işaretçi ve uzunluk içerir; kopyalama veya ayırma yapmaz.
constspan'ler salt okunurdur; değiştirilebilir span'ler kaynağı düzenler.- Yalnızca kaynak yaşadığı sürece geçerlidir.
Sıkça Sorulan Sorular
“std::span Temelleri” dersi ücretsiz mi?
Evet — “std::span Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“std::span Temelleri” dersinde ne öğreneceğim?
Bitişik veriler üzerinde sahipliksiz görünümler C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“std::span Temelleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sabit Boyutlu std::array
- std::span Temelleri
- Span'leri İşlevlere Aktarma
- Sınırlar ve Alt Span'ler