Visual Studio 2012 Visual C++ 入門


改進的C++11標准的支持

標准模板庫

為STL添加了新的庫文件:<atomic>、<chrono>、<condition_variable>、<filesystem>、<future>、<mutex>、<radio>和<thread>

std::vector在VS2010的16字節縮小到VS2012的12個字節,std::map在VS2010中的16字節縮小到VS2012的8個字節。

其他C++11提高

基於范圍的for循環,支持數組、STL容器和Windows運行時集合。

無狀態的lambda,是從一個空lambda介紹人啟動的代碼塊[]並且不訪問局部變量,隱式現在是函數的轉換指針作為C++11標准要求。

范圍枚舉支持:C++ enum class枚舉鍵現在支持,下面演示與之前的不同

enum class Element { Hydrogen, Helium, Lithium, Beryllium };
void func1(Element e);
func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
func1(Element::Helium); // OK

並行編程的支持

泛型並行編程增強

支持asyncchrony和延續的豐富的基於任務的編程模型。參見任務並行(並發運行時)。

並行算法,支持分叉聯接並行度(parallel_for、parallel_for_each、parallel_sort、parallel_reduce、parallel_transform)

並發安全的容器,提供std數據結構的線程安全版本例如priority_queue、queue、vector和map.

異步代理庫,開發人員可以使用表示數據流管道自然分解為並發單元。

VC++中的重大修改

通過/clr編譯的代碼,enum class關鍵字定義為 C++ 11 enum,而不是CLR 的 enum。定義CLR的enum,必須限制的指定可訪問性,參見下面的例子

enum class ArrivalStatus // C++11 scoped enum
{
    Late, OnTime, Early
};

private enum class DepartureStatus // CLR enum (because of explicit accessibility)
{
    Late, OnTime, Early
};

void PrintStatus(ArrivalStatus arrival, DepartureStatus departure)
{
    Console.WriteLine("Departure: {0}, Arrival: {1}", 
        departure.ToString(), 
        arrival.ToString() // ERROR: not a CLR enum; does not support .ToString()
        );
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM