Haftalık C++ 11- std::initializer_list’in parametre olarak kullanımı

Hello everybody, we are looking at another snippet this week. In this article, I will provide you a sample code that illustrate passing std::initializer_list  as parameter. I already mentioned std::initializer_list in my modern C ++ article. If you don’t have any idea about this feature, I strongly recommend that you take a look at my article below.

Modern C++ (3): Uniform Initialization, override/final, default/delete, constexpr, vb.

Let assume that, we want to have a set of parameters of the same type in any method or constructor. We don’t want to use std::vector and similar containers (they don’t look so good 🙂 and we want to do this in a modern way. How are we going to do? Let’s see it 🙂

 

Our goal is to add points to this class (let’s assume that they are two-dimensional for now), in an easy way. Normally, you can add them individually or via a vector or array. Now let’s look at how we do this using std::initializer_list and how many different ways.

Yes friends, I think the code above shows a lot of examples in the sense of the use of std::initializer_list. This kind of structures, I think, make the code really more readable and simple. That’s why I suggest you to start using it immediately.

I’m yazilimperver, see you in my next post. Happy codings 🙂

 Modern C++ (3): Uniform Initialization, override/final, default/delete, constexpr, vb.

Şimdi diyelim ki herhangi bir metoda ya da yapıcıya aynı tipte bir takım parametreler geçirmek istiyoruz. std::vector ve benzeri konteynerler de kullanmak istemiyoruz (keza pek güzel durmuyorlar 🙂 ve bu işi modern bir şekilde yapmak istiyoruz. Nasıl yapacağız? Hemen bakalım 🙂

Örnek için LineString isminde bir sınıfımız olduğunu kabul edelim. Bu sınıf, noktaların birleşmesinden oluşan çizgileri temsil ettiğini düşünelim. Bu tarz geometriler özellikle Coğrafi Bilgi Sistemlerinde, vektörel verilerin temsil edilmesinde kullanılırlar. Aşağıda, farklı linestring geometrilerini görebilirsiniz:

Amacımız bu sınıfa noktaları (şimdilik iki boyutlu olduklarını kabul edelim), kolay bir şekilde eklemek olsun. Normal şartlarda bunları tek tek ya da bir vektör ya da dizi aracılığı ile ekleyebilirsiniz. Şimdi bunu std::initializer_list ile nasıl ve kaç farklı yolla yaparız ona bakalım.

Evet arkadaşlar, yukarıdaki kod sanırım std::initializer_list ‘in kullanımı anlamında bir çok örnek göstermiş oldu. Bu tarz yapılar, bana kalırsa kodu gerçekten daha okunabilir ve sade bir hale getiriyorlar. O sebeple şiddetle kullanmanızı öneriyorum.

Ben yazılımperver, bir sonraki yazımızda görüşmek üzere, iyi kodlamalar.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.