Thursday, October 31, 2013

auto variable in C++ 11

C++ 11 standard made lot many improvements to C++. New features like rvalue reference, lambda functions, auto variable and many more added to C++. There was auto variable in previous C++ also, but that has completely new meaning now. C++ 11 standard committee members, which also includes big organizations like, Microsoft, Apple, Google, IBM, decided C++98 auto variable is pretty useless, and new meaning can be given to auto keyword with little impact.

In this article we will discuss about auto variables.

Let’s start simple first,

       int i = 10;
       auto a = 10;

       cout<<typeid(i).name() << " "<<typeid(a).name()<<endl;// int int

We have explicitly mentioned ‘i’ as integer. For variable ‘a’ we left to compiler to decide its type.  As 10 is integer, type of a would be int. So cout will print ‘int int’ as output.
Let’s take bit complex example,

       vector<int> v;

       v.push_back(1);
       v.push_back(2);
       v.push_back(3);
       v.push_back(4);
       v.push_back(5);

       //print all elements of vector -- old C++ way
       for(vector<int>::iterator it = v.begin();it!= v.end(); it++)
       {
              cout<<*it;
       }

       //print all elements of vector -- used C++ 11 auto
       for(auto it = v.begin(); it != v.end(); it++)
       {
              cout<<*it;
       }

You can see how clumsy looking iterator variable definition can be easily replaced by auto keyword. You need not to explicitly specify which container you are using, and no need to remember what it contains, just v.begin() tells compiler its type.

At very least it makes code look cleaner.

One thing I wanted to bring to notice that C++ is statically typed language, and compiler has to know data type of object at compile time. So, data type of auto variables will also be decided at compile time only.
There are more concrete reasons to use auto variable with lambda functions that I will cover in article for lambda functions.


If you have any queries or suggestions, please put comments below. 

4 comments:

  1. Very good information and thanks for posting this here! Please keep sharing more information like this further in future. You can find more information on C++ Tutorials in the following link.

    Learn Cpp online

    ReplyDelete
  2. شركة الاتقان المثالية
    ان الكثير منا يعلم كل العلم ماهى اهمية النظافة بالنسبة لسلامة الفرد والاسره وحرصاً منا بذل قدمنا لكم افضل للنظافة بالمنطقة الشرقية حيث تقوم بتنظيف المنازل والفلل والسجاد والموكيت والمجالس والكنب والواجهات والمسابح والارضيات والعمائر والاحواش والخزانات وغيرها من الاشياء التى تحتاج الى تنظيف لكى تجعلك تحصل على بيت بريق ولامع ونظيف وخالى من الاوساء التى تجعلك عرضة للامراض والاوبئة .
    شركة المثالية للتنظيف
    اهلا بك عزيزى العميل مع افضل الشركات فى تقديم الخدمات المنزلية فى المنطقة الشرقية وهى
    الاتقان المثالية
    حيث تقوم بعملية تنظيف المنازل والفلل وتعقيمها وذلك بواسطة المواد والسوائل الافضل عالمياً كما تخلصك من الحشرات ان وجدت بالمنزل او اذا لم توجد توضع لك مبيد لكى لا تكون عرضة لدخول الحشرات لمنزل " حيث الوقاية خيراً من العلاج " وشركة المثالية للتنظيف تجعلك تحصل على اعلى درجات النظافة وهى درجة المثالية فشركتنا اسم على مسمى وليس بأسم فقط عادى مثل كل الشركات .
    شركة المثالية للتنظيف بالدمام
    تلميع ونظافة الارضيات وازلة البقع الصعبة التى قد لا تنظف بالطرق العادية للتنظيف نقوم بتنظيفها بسهوله ويسر .
    شركة المثالية للتنظيف بالجبيل
    العديد من الاشخاص يريد بلاط بيته او السيراميك او الرخام ينظف جيداً ويبرق وهذه من الاشياء التى نجيدها فى شركة المثالية للتنظيف
    شركة المثالية للتنظيف بالخبر
    نقوم بتنظيف الجدران والارضيات والسلالم والاستلس والدرايش وغيرها
    شركة المثالية للتنظيف بالقطيف
    نقوم ايضاً بغسيل المجالس والسجاد والستائر والنجف والنوافذ الزجاجية والواجهات
    شركة المثالية لتنظيف المنازل
    تنظيف قطع الاثاث والمطابخ والحمامات وتعقيم المنازل والفلل والقصور تواصلوا معنا الان نصلكم اينما كنتم .
    شركة المثالية للتنظيف

    ReplyDelete