()begin و () end
دو عضو جدید STL برای بدست اوردن اولین عضو و اخرین عضو ساختمان داده های مرسوم
Example
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
std::vector<int> v = { 3, 1, 4 };
auto vi = std::begin(v);
std::cout << *vi << '\n';
int a[] = { -5, 10, 15 };
auto ai = std::begin(a);
std::cout << *ai << '\n';
}
Output:
3
-5
static_assert
static_assert مکانیزمی جهت اعتبار سنجی داده ها در هنگام کامپایل برنامه است که در صورتی که نوع مشخص شده همان نوع مورد انتظار باشد که هیچ در غیر این صورت کامپایل با استفاده از پیغامی که مشخص کردید مطلب را به شما اعلان می دارد. این مورد می تواند در توابعی که از Template ها استفاده می کنند کاربردی باشد .
template <typename T, size_t Size>
class Vector
{
static_assert(Size < 3, "Size is too small");
T _points[Size];
};
int main()
{
Vector<int, 16> a1;
Vector<double, 2> a2;
return 0;
}
error C2338: Size is too small
see reference to class template instantiation 'Vector<T,Size>' being compiled
with
[
T=double,
Size=2
]
اشاره گر های هوشمند:
موضوع اشاره گر ها همیشه یکی از موضوعات اصلی در برنامه نویسی ++C بوده است .این امکان (اشاره گرها) همانقدر که می توانند قدرمند باشند می توانند در صورت استفاده نادرست باعث هدر رفت و ایجاد حافظه هرز گردد .در واقع شما مسئول هر آنچه در حافظه رخ خواهد داد هستید و هر چقدر که حافظه که از اسیستم دریافت کرده اید باید در زمان عدم نیاز به سیستم بازگردانید .این مکانیزم برای برنامه نویسی سیستمی بسیار حیاتی است .البته از دیرباز برنامه نویسان سعی در بهبود این مکانیزم نموده اند و با طراحی کلاس های اختصاصی سعی در هوشمند کردن این اشاره گر ها نموده اند .
در C++ 11 با ایجاد چند کلاس سعی در هوشمند سازی اشاره گر ها شده است تا کاربر دغدغه خاصی از بابت این اشاره گر ها نداشته باشند که البته استفاده از این شیوه مدیریتی حافظه در فروم اصلی cocos2d-x در حال بحث است و تعدادی از کاربران با ارائه مستندات بر این نکته پا فشاری می کنند که استفاده از همان شیوه به استلاح(objective c pattern) و استفاده از autorelase بیشتری می تواند کار ساز باشد و بازدهی بالاتری خواهد داشت .
اما در کل 11 ++C با طراحی سه کلاس shared_ptr و unique_ptr و weak_ptr سعی در بهبود مدیریت اتوماتیک حافظه نموده است .
shared_ptr : هیچ کدام از ارجاعات به حافظه مالک اصلی حافظه نیستند و با از بین رفتن اخرین ارجاع فضا به سیستم باز خواهد گشت .
unique_ptr : هر ارجاع مسئول حافظه مورد استفاده است و با از بین رفتن ارجاع حافظه مورد استفاده نیز ازاد سازی خواهد شد .
پایان :
در پایان باید عرض کنم که تغیرات استاندارد جدید ++C به مراتب بیشتر از مواردی است که عرض شد و در اینجا فقط یک دید کلی از تغیرات و امکانات اضافه شده جدید ارائه گردید چه بسا بسیاری از این مباحث خود نیازمند مطلبی ویژه و مفصل باشد ولی در اینجا در قالب چند پاراگراف ارائه گردید است .در جمع آوری این مطالب نیز از منابع متفاوتی استفاده شده است و اگر هم در جایی حاوی اشتباهی بود خوشحال میشم نظر خواننده محترم را داشته باشم .