[STL] 1. What's new in VC++ 2010?

C++0x 2010. 6. 7. 00:00 Posted by 알 수 없는 사용자

소개
안녕하세요. 이번에 팀블로그에 합류하게 된 방수철이라고 합니다.
저는 VC++ 2010에서 구현된 Standard C++ Library에 대해서 소개를 드리고자 합니다.
이 글에서는 간단하게 어떤 변화가 있었는지 개요를 설명드리고, 이 후의 글에서 하나씩 집어보려 합니다.


Standard C++ Library의 변경사항

  • STL의 많은 함수에서 move semantics와 perfect fowarding을 구현하기 위해서 rvalue reference를 사용하였습니다. Move semantics와 perfect fowarding은 변수나 매개변수의 메모리 할당이나 변수 할당의 성능을 크게 향상시킵니다.

  • auto_ptr 클래스보다 더 안전한 스마트 포인터형인 unique_ptr 클래스의 구현에도 Rvalue reference가 사용되었습니다. unique_ptr 클래스는 move는 할 수 있지만 copy는 불가능하며, safety에 영향을 미치지 않으면서 강한 소유 의미(strict ownership semantics)를 구현했습니다. 또한, unique_ptr 클래스는 rvalue references가 구현된 container들과 잘 동작합니다.
  • <memory>헤더에 포함된, 새로운 make_shared 함수는 어떤 객체가 만들어지는 동시에 shared pointer를 만들기에 편리하고, 안전하며, 효율적입니다.

  • find_if_not, copy_if, is_sorted 와 같은 15개의 새로운 함수가 <algorithm>에 추가되었습니다.

  • 단반향으로 연결된 리스트(single linked list)가 <forward_list> 헤더에 의해서 지원됩니다.

  • cbegin, cend, crbegin, crend 멤버 함수는 container에서 앞으로 또는 뒤로 움직이는 const_iterator를 제공합니다.

  • <system_error> 헤더와 관련된 템플릿은 저수준 시스템 오류를 처리하는 것을 지원합니다.

  • exception_ptr 클래스의 멤버들은 쓰레드 간에 예외를 전송하기 위해 사용될 수 있습니다.

  • <codecvt> 헤더는 유니코드 문자의 다양한 인코딩을 다른 인코딩으로 변환하는 것을 지원합니다.

  • <allocators> 헤더는 node기반의 container에 대한 메모리 블럭의 할당과 해제를 돕는 여러 템플릿을 정의합니다.

  • <random> 헤더에 많은 업데이트가 있습니다.

다음 글들에서는 각각에 대해서 좀 더 자세히 소개하도록 하겠습니다.

'C++0x' 카테고리의 다른 글

[STL] 3. unique_ptr (2/2)  (0) 2010.08.04
[STL] 2. unique_ptr (1/2)  (0) 2010.07.27
[Plus C++0x] 람다(Lambda) 이야기 (마지막회)  (2) 2010.06.03
[Plus C++0x] 람다(Lambda) 이야기 (3)  (0) 2010.06.01
[Plus C++0x] 람다(Lambda) 이야기 (2)  (1) 2010.05.27