Hej,
zgodnie ze standardem C ? / C++ ? wszystkie globalne zmienne sa na "dzien dobry" wyzerowane. Chcialbym uzyskac aby podczas tej inicjalizacji nie bylo wypelniane domyslnie zerami, ale moja, wybrana wartoscia. Jakies pomysly? Nie interesuja mnie vectory ani inne takie, musi byc int[].
przyklad: http://ideone.com/7Z2Dsi
dla mojego zastosowania tablice sa znacznie wieksze. Jakies pomysly?
Dzieki wielkie!
0
1
Lista inicjalizacyjna, albo jakieś niestandardowe rozwiązania.
0
#define NUMBER 1
#define NUMBERS {NUMBER, NUMBER, NUMBER, NUMBER, NUMBER}
#define NUMB {NUMBERS, NUMBERS, NUMBERS, NUMBERS, NUMBERS}
int matrix[5][5] = NUMB;
1
Możesz sobie wygenerować źródło, przykładowo:
require 'prime'
puts <<CODE
#include <cstdio>
int primes[] = { #{Prime.take(1000).join(',')} }
int main() {
for (size_t i = 0; i < sizeof(primes) / sizeof(int); ++i)
printf("%d\n", primes[i]);
return 0;
}
CODE
I tak postał kod, który wypisze Ci 1000 liczb pierwszych w stałym czasie.
2
Wersja standardowa: http://www.fredosaurus.com/notes-cpp/arrayptr/array-initialization.html
Wersja z metaprogramowaniem: http://stackoverflow.com/a/2981617
Dwa wymiary: http://www.ibm.com/support/knowledgecenter/SSAE4W_9.0.0/com.ibm.xlcpp111.aix.doc/language_ref/aryin.html
Constexpr: http://stackoverflow.com/a/19023500
Paradoksalnie najładniej to chyba zrobić w ASM:
http://stackoverflow.com/a/36384830
Reszta to jakieś cudaczne "przykuce".