C++11'de dizi sınıfının kullanılmaya başlanması, C tarzı diziler için daha iyi bir alternatif sunmuştur. Dizi sınıfının C tarzı diziye göre avantajları özetle şunlardır.
Array sınıfları kendi boyutunu bilirken, C tarzı dizilerde bu özellik yoktur. Bu yüzden fonksiyonlara aktarırken, Array'in boyutunu ayrı bir parametre olarak aktarmamız gerekmez.
C tarzı dizilerde, dizinin bir işaretçiye dönüşme riski daha fazladır. Dizi sınıfları işaretçilere dönüşmez.
Dizi sınıfları genellikle C tarzı dizilerden daha verimli, hafif ve güvenilirdir.
Şimdi işaretçilere pointerlara dönüşmez ifadesi ne demek? Bu “Dizi Bozulması” olarak da geçer peki bu nedir? (Yanda ki aşağı okuna bas.)
#include<iostream>
#include<array> // array, at()
#include<tuple> // get()
using namespace std;
int main()
{
array<int,6> ar = {1, 2, 3, 4, 5, 6};
cout << "The array elements are (using at()) : ";
for ( int i=0; i<6; i++)
cout << ar.at(i) << " ";
cout << endl;
cout << "The array elements are (using get()) : ";
cout << get<0>(ar) << " " << get<1>(ar) << " ";
cout << get<2>(ar) << " " << get<3>(ar) << " ";
cout << get<4>(ar) << " " << get<5>(ar) << " ";
cout << endl;
//Hatalıdır böyle bir kullanıma get izin vermez.
/* for ( int i=0; i<6; i++)
cout << get<i>(ar) << " ";
cout << endl; */
cout << "The array elements are (using operator[]) : ";
for ( int i=0; i<6; i++)
cout << ar[i] << " ";
cout << endl;
return 0;
}
Ekran çıktısı:
#include<iostream>
#include<array>
using namespace std;
int main()
{
// Initializing the array elements
array<int,6> ar = {1, 2, 3, 4, 5, 6};
// İlk elemanı yazdıralım
cout << "First element of array is : ";
int &a=ar.front();
cout <<a<< endl;
// Son elemanı yazdıralım
cout << "Last element of array is : ";
int &b=ar.back();
cout << b << endl;
// İlk ve son elemanı referans aracılığı ile değiştirelim.
a=10; // 1. Eleman 10 değeri atadık.
b=60; // Son elemana 60 değeri atadık.
// Görelim değişmiş mi.
cout<<"array after updating first and last element \\n";
for (auto x: ar)
cout<<x<<" ";
cout<<endl;
return 0;
}
Ekran çıktısı: