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

Jak zadeklarować tablicę w c++ aby każda wartość w niej wynosiła 0

Object Storage Arubacloud
0 głosów
632 wizyt
pytanie zadane 28 lipca 2020 w C i C++ przez wojtek_suchy Mądrala (6,880 p.)

Tak jak w temacie, wydaje mi się że istnieje sposób żeby w C++ podczas tworzenia tablicy nadać wszystkim jej elementom tą samą wartość, czy coś takiego da się zrobić ?

Coś  w stylu

int tab = [0] * 100 // podobnie robiłem w Pythonie

a w C++ umiem jedynie tak:

int tab[100];
for (int i = 0; i < n; i++) tab[i] = 0;

jest szybszy i bardziej elegancki sposób ?

 

komentarz 28 lipca 2020 przez tkz Nałogowiec (42,000 p.)
Użycie vectora.

2 odpowiedzi

+5 głosów
odpowiedź 28 lipca 2020 przez adrian17 Ekspert (344,860 p.)
wybrane 29 lipca 2020 przez wojtek_suchy
 
Najlepsza

W klasycznych tablicach, zerem, bardzo łatwo :)

int tab[100] = {};

https://stackoverflow.com/a/201116/2468469

+1 głos
odpowiedź 28 lipca 2020 przez tangarr Mędrzec (154,860 p.)

Na szybko do głowy przyszły mi 4 metody

1. memset

#include <string.h>
int tab[100];
memset(tab, 0, sizeof(tab));

2. std::fill_n

#include <algorithm>
int tab[100];
std::fill_n(tab, 100, 0);

3. array::fill

#include <array>
std::array<int, 100> tab;
tab.fill(0);

4. konstruktor std::vector

#include <vector>
std::vector<int> tab(100, 0);
komentarz 28 lipca 2020 przez j23 Mędrzec (194,920 p.)
int tab[100];
memset(tab, 0, sizeof(tab));
int tab[100] = { 0 };

 

komentarz 28 lipca 2020 przez tangarr Mędrzec (154,860 p.)

Akurat zapisu

int tab[100] = { 0 };

to bym się wystrzegał, w ten sposób zainicjowany zostanie tylko pierwszy element tablicy
Natomiast sposób przedstawiony przez adrian17 jest fenomenalny, aż mi wstyd, że o tym nie pomyślałem.

komentarz 28 lipca 2020 przez j23 Mędrzec (194,920 p.)

w ten sposób zainicjowany zostanie tylko pierwszy element tablicy

Nieprawda. Zapis, który pokazałem, robi dokładnie to, co twój, czyli wywołuje funkcję memset.

 

komentarz 28 lipca 2020 przez tangarr Mędrzec (154,860 p.)

@j23 Racja.
Zrobiłem eksperyment i masz rację.
Sugerowałem się tym, że zapis

int tab[100] = { 1 };

ustawi jedynkę na pierwszym miejscu tablicy.
Myślałem, że przy takiej inicjalizacji tylko pierwszy element jest ustawiany. A wychodzi na to, że reszta elementów tablicy dostaje wartość domyślną.

Podobne pytania

0 głosów
0 odpowiedzi 328 wizyt
+1 głos
1 odpowiedź 379 wizyt
pytanie zadane 8 stycznia 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,565 zapytań

141,416 odpowiedzi

319,596 komentarzy

61,948 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...