• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wektory w parametrze funkcji

Hosting forpsi easy 1 pln
+1 głos
90 wizyt
pytanie zadane 23 sierpnia w C i C++ przez Janchess Początkujący (480 p.)
Czy wektory przekazywane są do funkcji jako oryginał czy jako kopie ?

2 odpowiedzi

+2 głosów
odpowiedź 23 sierpnia przez adrian17 Ekspert (337,860 p.)

Tak samo jak wszystko inne - zależy od typu argumentu.

// kopia
void f(int x);
void f(float x);
void f(JakasStruktura x);
void f(std::string x);
void f(std::vector<int> x);

// "przez wskaźnik" (wciąż kopia, ale... no, wskaźnika)
void f(int *x);
void f(JakasStruktura *x);
etc

// referencja
void f(int &x);
void f(std::vector<int> &x);
etc

 

komentarz 23 sierpnia przez Janchess Początkujący (480 p.)
Dlaczego zatem tablice nigdy nie są kopiowane ?
komentarz 23 sierpnia przez VNC Nowicjusz (240 p.)
taka specyfika C++
komentarz 23 sierpnia przez adrian17 Ekspert (337,860 p.)
edycja 23 sierpnia przez adrian17

"Stare" tablice to wyjątek, nie możesz zapisać przekazywania ich przez kopię bo język traktuje zapis tak jak gdyby był przekazywaniem wskaźnika:

void f(int tab[5]);
void f(int tab[]);
// to tak naprawdę jest to samo co:
void f(int *tab);

Można je wciąż przekazać przez referencję:

void f(int (&tab)[5]);

Ale no, często w takich sytuacjach się preferuje zamiast starych tablic używać std::array, który jest analogiczny do zwykłych tablic i można (tak jak wszystko inne) przekazywać go przez wartość/referencję/etc normalną składnią:

void f(std::array<int, 5> tab);

 

1
komentarz 24 sierpnia przez Oscar Nałogowiec (29,130 p.)

@Janchess, Bo język może nie znać rozmiarów tablicy.

+1 głos
odpowiedź 23 sierpnia przez tangarr Mędrzec (154,260 p.)

Wszystkie parametry przekazywane przez wartość są kopiowane. Żeby przekazać oryginalny parametr musisz przekazać referencję.

// funkcja która może zmodyfikować oryginalny wektor
void funkcja(std::vector<TYP> &wektor);

//funkcja która może tylko czytać z wektora bez modyfikacji
void funkcja2(const std::vector<TYP> &wektor)

 

Podobne pytania

0 głosów
1 odpowiedź 435 wizyt
pytanie zadane 28 kwietnia 2020 w C i C++ przez Adrian Maj Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 216 wizyt
pytanie zadane 18 kwietnia 2018 w C i C++ przez Perseusz Bywalec (2,190 p.)
0 głosów
0 odpowiedzi 480 wizyt
pytanie zadane 12 kwietnia 2017 w C i C++ przez ChiriChiri Obywatel (1,260 p.)

92,129 zapytań

140,788 odpowiedzi

317,814 komentarzy

61,451 pasjonatów

Advent of Code 2023

Top 15 użytkowników

  1. 1886p. - Łukasz Eckert
  2. 1856p. - Dawid128
  3. 1844p. - Marcin Putra
  4. 1844p. - CC PL
  5. 1775p. - Mikbac
  6. 1633p. - rafalszastok
  7. 1562p. - rucin93
  8. 1553p. - sefirek
  9. 1492p. - Adrian Wieprzkowicz
  10. 1456p. - Eryk Andrzejewski
  11. 1444p. - jaroslawroszyk
  12. 1383p. - Rafał Trójniak
  13. 1325p. - Michal Drewniak
  14. 1275p. - dia-Chann
  15. 1272p. - 13NOONE37
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Uwaga - w dniach od 02.12 do 08.12 trwają Mikołajki (książki drukowane mają rabat -35%, ebooki do -45%). Zaś dodatkowy, specjalny kod zniżkowy: HELMIKOLAJ-10 dla naszych Widzów zapewni Wam oszczędność -10zł dla zamówień powyżej 70zł! Warto korzystać!

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...