array slicing
Megjelenés
Főnév
array slicing (tsz. array slicings)
- (informatika) Az array slicing (tömbszeletelés) egy olyan művelet, amellyel egy tömb vagy lista egy részét kivághatjuk, azaz egy részhalmazát lekérhetjük. A kifejezés különösen népszerű dinamikus nyelvekben (pl. Python), de C++-ban és C-ben más módszerekkel kell megvalósítani.
🧠 Alapötlet
Array slicing célja:
Kivenni egy tömb vagy lista bizonyos elemeit, egy adott kezdő- és végindex alapján.
Példa (Python):
a = [10, 20, 30, 40, 50]
sliced = a[1:4] # [20, 30, 40]
📌 Slicing dinamikus nyelvekben
Python
lista = [0, 1, 2, 3, 4, 5]
print(lista[2:5]) # [2, 3, 4]
print(lista[:3]) # [0, 1, 2]
print(lista[::2]) # [0, 2, 4]
Formátum:
lista[start:stop:step]
⚙️ C++ és C – Hogyan lehet megvalósítani?
A C/C++ nem támogatja közvetlenül a slicing szintaxisát (a[1:4]), de implementálható kézzel másolással vagy pointerekkel.
🧾 1. Másolás új tömbbe
int a[] = {10, 20, 30, 40, 50};
int start = 1;
int end = 4;
int size = end - start;
int slice[3]; // VAGY: int* slice = new int[size];
for (int i = 0; i < size; ++i)
slice[i] = a[start + i];
🧾 2. Pointer alapú szelet
int a[] = {10, 20, 30, 40, 50};
int* slice = &a[1]; // pointer a szelet elejére
for (int i = 0; i < 3; ++i)
std::cout << slice[i] << ' '; // 20 30 40
Figyelem: Ez nem másolás, csak mutató az eredeti tömb belsejére. Vigyázni kell az érvényességgel!
🧾 3. std::span – Modern megközelítés (C++20)
A std::span egy nem birtokló nézet egy tömb egy szeletére.
#include <span>
#include <iostream>
void kiir(std::span<int> resz) {
for (int x : resz)
std::cout << x << ' ';
}
int main() {
int a[] = {1, 2, 3, 4, 5};
std::span<int> s(a + 1, 3); // 2, 3, 4
kiir(s);
}
Ez C++-ban a legjobb megoldás slicing-ra, ha van C++20 támogatás.
📦 std::vector slicing
A std::vector sem támogatja közvetlen slicingot, de egyszerűen másolható:
#include <vector>
#include <iostream>
std::vector<int> slice(const std::vector<int>& v, int start, int end) {
return std::vector<int>(v.begin() + start, v.begin() + end);
}
int main() {
std::vector<int> v = {10, 20, 30, 40, 50};
auto s = slice(v, 1, 4); // {20, 30, 40}
for (int x : s) std::cout << x << ' ';
}
✅ Összefoglalás
| Nyelv | Támogatás | Megjegyzés |
|---|---|---|
| Python | Beépített slicing a[start:stop:step] |
Nagyon rugalmas |
| C | Manuális másolás, pointerek | Vigyázni kell a határokkal |
| C++ | std::vector, std::span, kézi megoldás |
C++20-tól std::span az ideális |
| Rust, Go, JavaScript | Szintaktikus vagy metódus alapú slicing | Kényelmes |
- array slicing - Szótár.net (en-hu)
- array slicing - Sztaki (en-hu)
- array slicing - Merriam–Webster
- array slicing - Cambridge
- array slicing - WordNet
- array slicing - Яндекс (en-ru)
- array slicing - Google (en-hu)
- array slicing - Wikidata
- array slicing - Wikipédia (angol)