Giriş
Açıklaması şöyle.
Eleman Sayısından Az Değer Belirtmek
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparsak ilk 5 harfi ilklendiririz. 6. harf null olur.
Şöyle yaparsak sadece ilk değere -1 atarız, geri kalan alanlara 0 atanır.
Eğer bir diziyi belli bir değer ile ilklendirmek istersek en güzel yolu std::fill_n veya std::fill metodlarını kullanmak.
Gramerde de görülebileceği gibi son elemandan sonra virgül gelebilir.
Bir Önceki Elemanı Kullanmak
Elimizde şöyle bir kod olsun.
Açıklaması şöyle.
If type is an array type, an array of objects is initialized.
- If initializer is absent, each element is default-initialized
- If initializer is an empty pair of parentheses, each element is value-initialized.
- If initializer is a brace-enclosed list of arguments, the array is aggregate-initialized. (since C++11)
Aggregate ve Initializer List
Array bir aggreate olduğu için std::initializer_list alan bir constructor'a sahip değil. Bu yüzden karmaşık tanımlamalarda fazladan bir kıvırcık parantez kullanmak gerekiyor.
Örnek
Şöyle yaparız
std::array <std::pair<int, int>, 3> a{ { {1,2},{3,4},{5,6} } };
^ ^
|the inner aggregate|
Örnek
Şöyle yaparız.
auto p1 = new int[10]; // valid
auto p2 = new int[10](); // valid
auto p3 = new int[10]{5}; // valid
auto p4 = new int[10](5); // invalid
p3'ün ilk elemanı 5 olur. Diğer 9 eleman 0 olur.Örnek
Şöyle yaparsak ilk 5 harfi ilklendiririz. 6. harf null olur.
class A
{
char name[40] = { "Blank" };
};
ÖrnekŞöyle yaparsak sadece ilk değere -1 atarız, geri kalan alanlara 0 atanır.
double * p = new double[10] {-1}
ÖrnekEğer bir diziyi belli bir değer ile ilklendirmek istersek en güzel yolu std::fill_n veya std::fill metodlarını kullanmak.
double *p = new double[10];
std::fill_n(p, 10, -1);
ya da şöyle yaparız.std::fill(p, p + 10, -1);
Eleman Sayısı Kadar Değer BelirtmekGramerde de görülebileceği gibi son elemandan sonra virgül gelebilir.
int x[] = {
1,
2,
3,
};
Elimizde şöyle bir kod olsun.
const int foo[2] = {13, foo[0] + 42};
Bu kod tehlikeli olabilir. Şöyle yapmak daha iyi.constexpr int value = 13 ;
const int foo[2] = {value, value+42};
Hiç yorum yok:
Yorum Gönder