Giriş
Şu satırı dahil ederiz
Eskiden şöyle yapardık
constructor
İmzaları şöyle
Şöyle yaparız.
İmzası şöyle
Şöyle yaparız. std::ranges altta begin() ve end() metodlarını kullanır.
Şöyle yaparız
Şöyle yaparız
Şu satırı dahil ederiz
#include <span>
Açıklaması şöyle. C++20 ile geliyor. Bu sınıf bir ara array_view ve array_ref olarak isimlendirildi.KullanımThe class template span describes an object that can refer to a contiguous sequence of objects with the first element of the sequence at position zero. A span can either have a static extent, in which case the number of elements in the sequence is known and encoded in the type, or a dynamic extent.
Eskiden şöyle yapardık
void read_into(int* buffer, int buffer_size);
Şimdi şöyle yapabileceğiz.void read_into(span<int> buffer);
constructor
İmzaları şöyle
std::span<T> // non-const span of non-const elements
std::span<const T> // non-const span of const elements
const std::span<T> // const span of non-const elements
const std::span<const T> // const span of const elements
ÖrnekŞöyle yaparız.
float* old = new float[6];
std::iota(old, old + 6, 0);
std::span<float> vpd(old, 6);
vpd[0] = 23;
std::cout << old[0] << std::endl;
delete[] old;
begin metodu
İmzası şöyle
constexpr iterator begin() const noexcept;
constexpr iterator end() const noexcept;
ÖrnekŞöyle yaparız. std::ranges altta begin() ve end() metodlarını kullanır.
#include <algorithm>
#include <cassert>
#include <span>
namespace ranges = std::ranges;
int main()
{
int arr[] {1, 7, 3, 2, 0, 5, 0, 8};
const std::span spn{arr};
ranges::fill(spn, 173); // this compiles
assert(ranges::count(arr, 173) == 8); // passes
}
end metoduŞöyle yaparız
#include <span>
#include <iostream>
#include <algorithm>
int main() {
int data[] = { 5, 3, 2, 1, 4 };
std::span<int> s{data, 5};
std::sort(s.begin(), s.end());
for (auto const i : s) {
std::cout << i << "\n";
}
return 0;
}
operator[] metodu
Şöyle yaparız
void foo(std::span<int> const& s) {
s[0] = 42;
// now, consider what this does
std::span<int> t = s;
// and this
t[0] = 42;
}
Hiç yorum yok:
Yorum Gönder